C++ typedef a std::p air,然后使用 typedef 声明映射

C++ typedef a std::pair and then use the typedef to declare a map

本文关键字:typedef 声明 映射 然后 air std C++      更新时间:2023-10-16

假设我有这个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::",你可以使用使用命名空间标准;谢谢。