10.map or multimap

map or multimap

map相对于set区别,map具有键值和实值,所有元素根据键值自动排序,pair的第一个值被称为键值key,pair的第二个值被称为实值value。map也是以红黑树为底层实现机制,根据key进行排序

构造函数

map<键类型, 值类型, 比较器> mp

默认从小到大

#include
map<int,string> m;
multimap<T1,T2> mlmap;

插入

  • 方法一

    map的key重复将无法放入,multimap则可以

    m.insert({1,"汪汪汪"});
    
  • 方法二

    map的key重复则更新value
    注意!!multimap不能用这种方法,因为key不唯一
    []方法访问map,如果key不存在将会自动创建

    m[2]="喵喵喵";  
    
  • 其他方法

    m.insert(pair(3,"咩咩咩"));
    m.insert(make_pair(4,"咕咕咕"));
    

擦除

m.erase(2);

遍历

for(auto it=m.begin();it!=m.end();it++)
{
	cout<<it->first<<" "<<(*it).second<<endl;
}
for(auto it:m)
{
	cout<<it.first<<" "<<it.second<<endl;
}

查找

返回迭代器,找不到返回end迭代器

auto it=m.find(2);
cout<<it->second<<endl;
m.count(2); // 返回key为2的个数

大小

int size();
bool empty();

你可能感兴趣的:(STL,c++,算法,数据结构)