我有一段代码
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_type
和key_type
究竟是什么意思? key_type
是否与密钥的数据类型相关,此处为string
且mapped_type
与size_t
相关或是否为其他内容?
答案 0 :(得分:0)
您正在定义类型别名。也就是说,您说从现在起name_map_type
是std::map<std::string, size_t>
的别名。同样适用于name_map_mt
和name_map_kt
,它们将分别作为成员类型std::map<std::string, size_t>::mapped_type
和std::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
相同。