vector/list/deque 序列式容器:单纯存储数据
map/set 关联式容器:不仅存储数据,还可以查找数据,存储的数据和数据之间关联性很强
set //key模型搜索 排序+去重
lower_bound() //>= x
upper_bound() //> x
map:
用pair来作为key和val之间的联系
有哪些书写方法呢?
map<string,string> dict;
map<string,string> kv1("sort","排序");
dict.insert(kv1);
dict.insert(pair<string,string>("left","左边"));
dict.insert(make_pair("right","右边"));
pair<string,string> kv2 = {"string","字符串"};
dict.insert({"string","字符串"});
map<string,string> dict2 = {{"left","左边"},{"right","右边"},{"string","字符串"}};
iterator key 不能修改 value可以修改
const_iterator key和value都不能修改
重点:
operator[]
insert:
key 存在 插入失败,返回 pair<存在的key所在节点的迭代器,false>
key 不存在 插入成功,返回 pair<新插入key所在节点的迭代器,true>
map<string,string> dict;
//插入
dict["right"];
//插入+修改
dict["left"] = "左边";
//查找
cout << dict["string"] << endl;
//修改
dict["right"] = "右边";
map<string,int> mapcount;
for(auto& e:mapcount)
{
mapcount[e]++;
}
multimap 和 multiset 都允许键值冗余
但是这两个都没有[]
sort是快排,快排不稳定
我们可以使用stable_sort,底层原理是归并排序