如果我们需要删除 STL 中的 unordered_multimap 容器中的元素,我们除了可以使用 erase 函数或者使用 clear 函数,我们使用 erase 删除的键存在多个时,会全部删除。
void erase( iterator pos );
void erase( iterator start, iterator end );
size_type erase( const KEY_TYPE &key );
参数 | 描述 |
---|---|
pos | 需要删除的位置。 |
start | 需要删除的开始位置。 |
end | 需要删除的结束位置。 |
key | 需要删除的键。 |
STL 中的 erase 方法支持三种重载方法。
使用 erase 根据 unordered_multimap 的键删除元素
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_multimap<string, string> unordered_multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"online", "yes"}};
if (unordered_multimap1.erase("online"))
{
cout << "unordered_multimap online has removed" << endl;
}
else
{
cout << "unordered_multimap online not removed" << endl;
}
for(auto iter = unordered_multimap1.begin(); iter != unordered_multimap1.end(); iter++)
{
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ unordered_multimap.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 unordered_multimap 的 erase 方法,删除了 unordered_multimap 中指定键的元素。
使用 erase 清空 unordered_multimap 的所有元素
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_multimap<string, string> unordered_multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"online", "yes"}};
unordered_multimap1.erase(unordered_multimap1.begin(), unordered_multimap1.end());
for(auto iter = unordered_multimap1.begin(); iter != unordered_multimap1.end(); iter++)
{
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 unordered_multimap 的 erase 方法,传入了开始迭代器和结束迭代器,清空了 unordered_multimap 所有元素。
使用 clear 清空 unordered_multimap 的所有元素
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_multimap<string, string> unordered_multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"online", "yes"}};
unordered_multimap1.clear();
cout << "Size =" << unordered_multimap1.size() << endl;
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 unordered_multimap 的 erase 方法,传入了开始迭代器和结束迭代器,清空了 unordered_multimap 所有元素。
当删除的键存在多个时,会全部删除
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
cout << "嗨客网(www.haicoder.net)\n" << endl;
unordered_multimap<string, string> unordered_multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"name", "haicoder"}};
if (unordered_multimap1.erase("name"))
{
cout << "unordered_multimap name has removed" << endl;
}
else
{
cout << "unordered_multimap name not removed" << endl;
}
for(auto iter = unordered_multimap1.begin(); iter != unordered_multimap1.end(); iter++)
{
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们看到,我们使用了 unordered_multimap 的 erase 方法,删除了 unordered_multimap 中的所有的 name 键。
如果我们需要删除 STL 中的 unordered_multimap 容器中的元素,我们除了可以使用 erase 函数或者使用 clear 函数,我们使用 erase 删除的键存在多个时,会全部删除。