标准库提供8个关联容器
按关键字有序保存有(红黑树实现)
set
map
multset 关键字可重复出现的set
multimap 关键字可重复出现的map
无序保存 哈希实现
unorderred_map
unorderred_set
unorderred_multimap
unorderred_multiset
map是一个个pair类型组成
map<int, int>mp;
for(auto i : mp){
printf("%d %d\n", i.first, i.second);
}
向map中添加元素的方法除了常用的类似与数组的方式(mp[i] = x)还有如下方式
mp.insert(pair)
set能直接insert(区间),例如
multiset<int> s;
for(int i = 10; i >= 0; i--){
s.insert(i);
s.insert(i);
}
set<int> ss(s.cbegin(), s.cend());
插入元素
map具有insert功能,插入的要是一个和关键字与值相对应类型的pair;
例如map<T1, T2>那么插入的pair类型也应该是<T1, T2>类型;
map的insert返回一个pair类型,first是一个指向插入节点的迭代器,second是一个bool类型,代表是否插入成功,如果本来在map里面有key的话就插入不成功。
set与map相类似,只不过插入的不是pair而只是一个符合set容器的值;
以上只符合插入的是单点的情况,即set插入一个变量,map插入pair,对其他情况并不适用。