介绍

multimap是一个 一个键对应多个值的容器

一键多值

类似于邻接表


创建multimap

与map同一头文件

#include<map>

创建一个multimap

multimap<键的类型,值的类型[,排序方式]>m;

添加元素

m.insert({键,值});

删除元素

删除key1的所有键值对

m.erase("key1");

删除key1的第一个键值对

m.erase(m.equal_range("key1").first);

删除key1的第二个键值对

m.erase(++m.equal_range("key1").first);

删除key1的第三个键值对

m.erase(++ ++m.equal_range("key1").first);

删除所有键值对

m.clear();

访问元素(C++11)

遍历全部键值对

for(auto i:m)
{
	cout<<i.first<<" "<<i.second<<"\n";
}

遍历全部键值对

for(auto i=m.begin();i!=m.end();i++)
{
	cout<<i->first<<" "<<i->second<<"\n";
}

反序遍历全部键值对

for(auto i=m.rbegin();i!=m.rend();i++)
{
	cout<<i->first<<" "<<i->second<<"\n";
}

遍历key1的所有值

for(auto i=m.equal_range("key1").first;i!=m.equal_range("key1").second;i++)
{
	cout<<i->first<<" "<<i->second<<"\n";
}

常用函数

返回键为key1的迭代器(遍历key1的所有值的迭代器)

equal_range(key1)

返回元素个数

size()

返回键为key1的元素个数

count(key1)

判空

empty()

返回第一个键为key1的指针

find(key1)

返回第一个不小于key1的指针

lower_bound(key1)

返回第一个大于key1的指针

upper_bound(key1)

返回正序首指针

begin()

返回正序尾指针

end()

返回反序首指针

rbegin()

返回反序尾指针

rend()