一、Map
使用时需要包含头文件:
#include <map>;
1.初始化
map<int, string> m;
2.成员函数的用法
map<int, string> m;
/*插入元素*/
m.insert(pair<int, string>(1, "A"));
m[2]="B";
/*查找元素*/
auto iter = m.find(1);
if (iter != m.end())
cout << "Find, the value is "<< iter->second << endl;
else
cout << "Do not Find" << endl;
/*刪除元素*/
auto iter = m.find(2);
m.erase(iter);
int f = m.erase(1);//刪除成功返回1,否则返回0
m.erase(m.begin(), m.end());//全部删除
m.clear();//全部删除
3.特点
- 提供一个键值对(key/value)容器
- 对于迭代器来说,可以修改实值,而不能修改key。Map会根据key自动排序。
- 如果该键不在 map 容器中,那么下标操作会插入一个具有该键的新元素。
二.set
使用时需要包含头文件:
#include <set>;
1.初始化
set<int> s;
2.成员函数的用法
set<int> s;
s.begin();//返回指向第一个元素的迭代器
s.end();//返回指向最后一个元素的迭代器
s.insert(elem);//在集合中插入元素elem
s.empty();//判断是否为空
s.clear();//删除所有的元素
s.size();//返回当前中的元素个数
s.find(elem);//返回一个指向被查找到元素的迭代器
s.erase(s.begin(), s.end());//全部删除
3.特点
- 根据元素的键值自动排序
- set元素的键值就是实值,实值就是键值
- 不允许两个元素有相同的键值
三.multimap
使用时需要包含头文件:
#include <map>;
1.初始化
multimap<int, string> M;
2.成员函数的用法
multimap<int, string> M;
M.insert(pair<int, string>(2, "A"));//插入元素
/*查找元素*/
auto iter=M.find(1);
int a;
a = iter->first;
for (auto i = iter; a == iter->first;iter++)
cout << iter->first << " " << iter->second << endl;
/*刪除元素*/
int f = M.erase(1);//刪除成功返回1,否则返回0
M.erase(M.begin(), M.end());//全部删除
M.clear();//全部删除
3.特点
- 允许将具有重复键值的元素插入容器。
- 元素的键值与元素的映照数据的映照关系,是多对多的。
- 只能采用迭代器的方式,而不能用数组方式,遍历容器的元素。
四.multiset
使用时需要包含头文件:
#include <set>;
1.初始化
multiset<int> S;
2.成员函数的用法
multiset<int> S;
S.begin();//返回指向第一个元素的迭代器
S.end();//返回指向最后一个元素的迭代器
S.insert(elem);//在集合中插入元素elem
S.empty();//判断是否为空
S.clear();//删除所有的元素
S.size();//返回当前中的元素个数
S.find(elem);//返回一个指向被查找到元素的迭代器
S.erase(S.begin(), S.end());//全部删除
S.count(elem);//计算容器中元素elem的个数
3.特点
- 根据元素的键值自动排序
- 元素的键值就是实值,实值就是键值
- 允许两个元素有相同的键值