1、在STL中,map是一种关联式容器,包含键值对即元素为pair
2、除此之后,map还是一种有序容器,这和Obj-C不一样,Obj-C中相对应的数据类型为Dictionay,这是一个无序容器;
3、与list、vector不一样的地方在于,map指定了键值对类型后,容器中元素是接收了键值对类型后的pair;
4、看下代码示例或许更直观一点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <iostream> #include <map> using namespace std; int main(){ map<int, int> map1; // 插入一个键值对,直接使用{}的方式 map1.insert({1, 1}); // 插入一个键值对,指定{}类型为pair<int,int> map1.insert((pair<int, int>){2, 2}); // 插入一个键值对,使用pair<int,int>的构造函数 map1.insert(pair<int, int>(3, 3)); // 插入一个键值对时会返回一个pair,pair的一个元素为map迭代器,第二个元素为bool值 // 意思是插入后会返回插入的结果,成功或失败并返回结果所在位置,即迭代器指向当前位置 pair<map<int, int>::iterator, bool> result; result = map1.insert(pair<int, int>(4, 4)); // 输出结果 cout << result.second << endl; // 遍历map中所有元素,元素为pair类型 for_each(map1.begin(), map1.end(), [](pair<int, int> p)->void{ cout << p.first << ":" << p.second << endl; }); return 0; } |
运行结果:
1
1:1
2:2
3:3
4:4
Program ended with exit code: 0