C++ typedef a std::p air,然后使用 typedef 声明映射
C++ typedef a std::pair and then use the typedef to declare a map
假设我有这个typedef
typedef std::pair<std::string, uint32_t> MyType;
那么,如果我还想使用 MyType 创建地图,我该怎么做?
我不想重新键入对中的两种类型,例如:
map<std::string, uint32_t> myMap;
我想要这样的东西:
map<MyType's first type, MyType's second type> myMap;
有没有办法使用我的typedef MyType而不是重新键入类型来做到这一点?
简单地...
std::map<MyType::first_type, MyType::second_type> myMap;
请参阅 http://en.cppreference.com/w/cpp/utility/pair
科里鲁的示例程序
如果要使用许多不同的类型执行此操作,则可以设置别名声明。
template <typename T>
using pair_map = std::map< typename T::first_type, typename T::second_type>;
typedef std::pair<std::string, int> MyType;
pair_map<MyType> my_map;
这至少需要 c++11。
当您使用一对时,它相当于单个属性。Pair 类似于派生数据类型。当您在 map 中使用一对时,根据你的声明,它被视为键或值。但是一对对象的第一个和第二个对象不能是映射中的键和值。您可以分别对这两种数据类型使用 typedef,并使用快捷方式或如上一个答案中所述。与其重复写"std::",你可以使用使用命名空间标准;谢谢。
相关文章:
- 向前声明指向类的 typedef 指针
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 如何创建 typedef 结构的前向声明
- 格式为`int Typedef my_int;`的Typedef声明
- 无法转发声明C typedef结构-正在查找其他建议
- "typedef"类型名称是否可以像"struct"定义那样声明指向结构的指针?
- 具有未声明/未定义类型的 typedef 结构
- 我们可以在声明中的任何位置放置"typedef"说明符吗?
- C++ typedef 函数指针,并在一个语句中声明一个指针
- 错误:使用 tesseract 引擎时 C++ 中的声明'typedef struct tagBLOB BLOB'冲突
- typedef 应该同时在类定义和类声明中吗?
- 向前声明 typedef 保护
- "myStateType"未在此范围内声明,原因 #typedef
- 在 typedef 结构中声明一个数组
- C++混淆的 typedef 声明
- 在 if.else 中修改 typedef 声明
- C++ typedef a std::p air,然后使用 typedef 声明映射
- typedef声明定义未命名类时链接失败
- 为什么Microsoft在他们的 winnt.h 文件中两次 typedef 声明什么构成 "double" ?
- 无法为 Typedef 声明好友