目录
map<int, int> m; //构造一个空的
- map<char, int> m;
- m['a'] = 10;
- m['b'] = 30;
- m['c'] = 50;
- m['d'] = 70;
- map<char, int> m1(m); //拷贝构造
- map<char, int> m;
- m['a'] = 10;
- m['b'] = 30;
- m['c'] = 50;
- m['d'] = 70;
- map<char, int> m2(m.begin(), m.end()); //迭代器构造
- struct classcomp
- {
- bool operator() (const char& lhs, const char& rhs) const
- {
- return lhs > rhs;
- }
- };
- map<char, int, classcomp> m3; // class as Compare
- map<int,int> v;
- //Iterators(迭代器)
- v.begin(); //获取第一个数的位置
- v.end(); //获取最后一个数的位置
- v.rbegin(); //获取最后一个数的位置
- v.rend(); //获取第一个数的位置
- map<int,int> v;
- //Capacity(容量)
- v.size(); //获取v数据的个数
- v.max_size(); //返回字符串可以达到的最大长度
- v.empty(); //判断v是否为空
- map<char, int> m;
- m['a'] = 10; //和数组下标类似,但是是以key找出value
- cout << m['a'] <<endl;
- /*operator[]的原理是:
- 用<key, T()>构造一个键值对,然后调用insert()函数将该键值对插入到map中
- 如果key已经存在,插入失败,insert函数返回该key所在位置的迭代器
- 如果key不存在,插入成功,insert函数返回新插入元素所在位置的迭代器
- operator[]函数最后将insert返回值键值对中的value返回*/
- map<char, int> m;
- map<char, int> m1;
- m['a'] = 10;
- m['b'] = 30;
- m['c'] = 50;
- m['d'] = 70;
- m.insert(make_pair('e', 88)); //插入元素
-
- map<char, int>::iterator it = m.find('b');
- m.erase(it); // erasing by iterator
- m.erase('c'); // erasing by key
- it = m.find('d');
- m.erase(it, m.end()); // erasing by range
-
- m1.swap(m); //交换
- m1.clear(); // 清空
- map<char, int>::iterator it = m.find('b');
- m.count('a');
- map<char, int>::iterator it = m.begin();
- while (it != m.end())
- {
- cout << (*it).first << " " << (*it).second << endl;
- it++;
- }
- for (auto e : m)
- {
- cout << e.first << " " << e.second << endl;
- }
- map中的的元素是键值对
- map中的key是唯一的,并且不能修改
- 默认按照小于的方式对key进行比较
- map中的元素如果用迭代器去遍历,可以得到一个有序的序列
- map的底层为平衡搜索树(红黑树),查找效率比较高O(log2 N)
- 支持[ ]操作符,operator[ ]中实际进行插入查找