1. 定义和初始化
-
定义:
std::map
是一个关联容器,键值对会自动根据键的值进行排序(默认是升序)。cpp复制
map<char, int> mp;
-
插入元素:可以通过
operator[]
或insert
方法插入键值对。cpp复制
mp['a'] = 1; mp['b'] = 3; mp['c'] = 2;
2. 遍历
-
使用迭代器遍历:
std::map
的迭代器可以用来遍历容器中的所有键值对。cpp复制
map<char, int>::iterator it = mp.begin(); map<char, int>::iterator itE = mp.end(); while (it != itE) {cout << it->first << " "; // 输出键cout << it->second << endl; // 输出值it++; }
3. 查找
-
使用
find
方法查找:find
方法会返回一个迭代器,指向找到的键值对。如果键不存在,则返回end()
。cpp复制
map<char, int>::iterator itFind = mp.find('b'); if (itFind != mp.end()) {cout << itFind->first << " " << itFind->second << endl; }
4. 删除
-
删除指定迭代器的元素:可以通过
erase
方法删除指定迭代器指向的元素。cpp复制
map<char, int>::iterator itB = mp.find('b'); mp.erase(itB);
-
删除指定键的元素:也可以通过键直接删除元素。
cpp复制
mp.erase('b');
-
删除范围内的元素:
erase
方法还可以删除指定范围内的元素。cpp复制
mp.erase(it, itE);
5. 获取大小
-
使用
size
方法:size
方法返回容器中元素的数量。cpp复制
cout << "The size of map is: " << mp.size() << endl;
6. 清空
-
使用
clear
方法:clear
方法会删除容器中的所有元素,但不会释放内存。cpp复制
mp.clear(); cout << "The size of map after cleaning is: " << mp.size() << endl;
7.插入
使用insert
方法:insert插入键值对进入map容器。
8.总结
std::map
是一个非常强大的关联容器,适用于需要快速查找、插入和删除键值对的场景。它的主要特点包括:
-
自动排序:键值对会根据键自动排序。
-
高效查找:查找操作的时间复杂度为O(logn)。
-
灵活操作:支持插入、删除、查找等多种操作
Coding
#include <iostream>
#include <map>
using namespace std;
int main() {
map<char, int> mp;
mp['b'] = 3;
mp['a'] = 1;
mp['c'] = 2;
//map will automatic sort by key value
map<char,int>::iterator it = mp.begin();
map<char,int>::iterator itE = mp.end();
while (it != itE) {
cout << it->first << " ";
cout << it->second << endl;
it++;
}
//The map can use so-called find function
map<char,int>::iterator itFind = mp.find('b');
cout <<endl << itFind->first << " " << itFind->second << endl;
//map can erase the aimed element or a contiuous part of elements
//erase iterator b
map<char,int>::iterator itB = mp.find('b');
mp.erase(itB);
//erase function can erase a contious elements
//mp.erase(it,itE);
//erase function can remove the elemnt by relative key
//mp.erase('b');
//size function can get the size of map
cout << "The size of map is :" << " " << mp.size() << endl;
//clear function can remove all of the map
mp.clear();
cout << "The size of map after cleaning is :" << mp.size() << endl;
return 0;
}