map排序、pair使用

map的赋值

map<int, string> m;
// #1# 用value_type
m.insert(map<int, string>::value_type(0, "xx"));
// #2# 用pair定义
m.insert(pair<int, string>(0,"xx"));
// #3# 用make_pair函数
m.insert(make_pair(0,"xx"));

注意,当map中key或value也是map时,会有一个坑

map<int, map<int, int>> m;
// #1# 用value_type
m.insert(map<int, map<int, int>>::value_type(0, map<int, int>::value_type(1, 2)));

上面的插入方式错误,因为第二项插入的应该是map类型,而实际上

map<int, int>::value_type(1, 2)

 上面这个只是map<int, int>类型中的一项(map中的一项),虽然这个看起来很像一个map

正确用法需要定义对应的对象:

map<int, int> ii;
ii.insert(map<int, int>::value_type(1, 2));
m.insert(map<int, map<int, int>>::value_type(0, ii));

 

 

map按key或value排序

 

pair详解

posted @ 2021-09-29 20:57  谷小雨  阅读(68)  评论(0编辑  收藏  举报