STL multimap删除元素

STL multimap删除元素教程

如果我们需要删除 STL 中的 multimap 容器中的元素,我们除了可以使用 erase 函数或者使用 clear 函数,我们使用 erase 删除的键存在多个时,会全部删除。

STL multimap删除元素详解

语法

void erase( iterator pos ); void erase( iterator start, iterator end ); size_type erase( const KEY_TYPE &key );

参数

参数 描述
pos 需要删除的位置。
start 需要删除的开始位置。
end 需要删除的结束位置。
key 需要删除的键。

说明

STL 中的 erase 方法支持三种重载方法。

案例

删除multimap元素

使用 erase 根据 multimap 的键删除元素

#include <iostream> #include <map> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; multimap<string, string> multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"online", "yes"}}; if (multimap1.erase("online")) { cout << "multimap online has removed" << endl; } else { cout << "multimap online not removed" << endl; } for(auto iter = multimap1.begin(); iter != multimap1.end(); iter++) { cout << iter->first << " " << iter->second << endl; } return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ multimap.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

38_STL multimap删除元素.png

我们看到,我们使用了 multimap 的 erase 方法,删除了 multimap 中指定键的元素。

清空multimap元素

使用 erase 清空 multimap 的所有元素

#include <iostream> #include <map> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; multimap<string, string> multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"online", "yes"}}; multimap1.erase(multimap1.begin(), multimap1.end()); for(auto iter = multimap1.begin(); iter != multimap1.end(); iter++) { cout << iter->first << " " << iter->second << endl; } return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

39_STL multimap删除元素.png

我们看到,我们使用了 multimap 的 erase 方法,传入了开始迭代器和结束迭代器,清空了 multimap 所有元素。

清空multimap元素

使用 clear 清空 multimap 的所有元素

#include <iostream> #include <map> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; multimap<string, string> multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"online", "yes"}}; multimap1.clear(); cout << "Size =" << multimap1.size() << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

40_STL multimap删除元素.png

我们看到,我们使用了 multimap 的 erase 方法,传入了开始迭代器和结束迭代器,清空了 multimap 所有元素。

删除multimap元素

当删除的键存在多个时,会全部删除

#include <iostream> #include <map> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; multimap<string, string> multimap1{{"name", "haicoder"}, {"url", "haicoder.net"}, {"name", "haicoder"}}; if (multimap1.erase("name")) { cout << "multimap name has removed" << endl; } else { cout << "multimap name not removed" << endl; } for(auto iter = multimap1.begin(); iter != multimap1.end(); iter++) { cout << iter->first << " " << iter->second << endl; } return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

41_STL multimap删除元素.png

我们看到,我们使用了 multimap 的 erase 方法,删除了 multimap 中的所有的 name 键。

STL multimap删除元素总结

如果我们需要删除 STL 中的 multimap 容器中的元素,我们除了可以使用 erase 函数或者使用 clear 函数,我们使用 erase 删除的键存在多个时,会全部删除。