map
map<string, int> mp;
mp.insert({ "aaa", 1 });
mp.insert({ "bbb", 2 });
for (auto i:mp) {
    cout << i.first << " " << i.second << endl;
}
for (map<string, int>::iterator it = mp.begin(); it != mp.end();it++) {
  cout << (*it).first << " " << (*it).second << endl;
  //cout << it->first << " " << it->second << endl;//理解为指针
}
mp.size();  
mp.empty();  
mp.clear(); 
mp.begin();  //返回mp中最小key的迭代器,和set一样,只可以用到--和++操作
mp.end();   //返回mp最大key的迭代器的后一个迭代器
mp.find(key);  //在mp中查找一个key并返回其迭代器,找不到则返回  mp.end()
mp.count(key);  //在mp中查找key的数量,因为map中key唯一,所以只返回1或0
mp.erase(key); //在mp中删除key所在的项
mp[key];  //返回mp中key对应的value,若key不存在,则默认构造key的value类型的值为0
mp[key] = value;  //构造值
mp.lower_bound(item); //返回map中第一个key大于等于item的迭代器,找不到则返回会mp.end()
mp.upper_bound(item); //返回map中第一个key大于item的迭代器,找不到则返回会mp.end()
- set和map前都可以加上unordered使得内部的元素不敢排序顺序存储,底层原理实现为hash,可以使所有的查询,修改,删除操作都变成o(1)复杂度