什么是mapped_type和key_type?

时间:2015-07-11 17:38:06

标签: c++ c++11

我有一段代码

typedef std::map<std::string, size_t>   name_map_type;
typedef name_map_type::mapped_type  name_map_mt;
typedef name_map_type::key_type     name_map_kt;

我无法确定mapped_typekey_type究竟是什么意思? key_type是否与密钥的数据类型相关,此处为stringmapped_typesize_t相关或是否为其他内容?

1 个答案:

答案 0 :(得分:0)

您正在定义类型别名。也就是说,您说从现在起name_map_typestd::map<std::string, size_t>的别名。同样适用于name_map_mtname_map_kt,它们将分别作为成员类型std::map<std::string, size_t>::mapped_typestd::map<std::string, size_t>::key_type的别名。

请注意,此类成员类型本身是别名,并在std::map<K, V>类定义中定义。特别是,给定std::map<K, V>,我们std::map<K, V>::mapped_type将与V相同,而std::map<K, V>::key_type将与K相同。