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));