c++ std::map value_type、key_type、mapped_type

map<string, int>::key_type  v1; //此时key_type的v1类型是string
map<string, int>::mapped_type  v2; //此时mapped_type的v2类型是int
map<string, int>::value_type  v3; //此时value_type的v3类型是pair<const string, int>,注意pair键值对中第一个元素的类型有const(不可修改).


对于泛型编程来说,可能不知道具体类型是什么,所有就有了key_type、mapped_type、value_type这些类型。


key_type就表示map中key的类型。以下两句是一个意思:
map<string, int>::key_type v1;
string v1;


同理,mapped_type表示map中value的类型。


value_type这是具体值的类型,由于map中存的是键值对pair。而key又不能修改。
故为pair<const string,int>。

è¿éåå¾çæè¿°

举个例子:

#include <iostream>
#include <map>

int main()
{
	using u_map = std::map<char, int>;
	u_map m;
	m.emplace('x', 64);

	u_map::key_type key;
	u_map::mapped_type mapped;
	u_map::value_type value;

	return 0;
}

使用 visual studio 2019调试结果如下[linux上用whatis或者ptype命令调试即可]:

从结果可以看出map中key_tpye的类型就是map中key的类型,mapped_type的类型就是map中value的类型,value_type的类型就是map中key/value的键值对pair的类型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值