C++ STL中unordered_multimap的erase函数

C++ STL中unordered_multimap的erase函数

C++ STL中,unordered_multimap是一个无序多重映射容器,可以存储多个键相同的元素,而且这些元素没有特定的排序规则。erase函数是unordered_multimap的一个成员函数,是用来删除unordered_multimap中指定元素的。

unordered_multimap的erase()函数有以下几种用法:

用法1

unordered_multimap::iterator unordered_multimap::erase(unordered_multimap::iterator position);

该用法会删除指定位置的元素,并返回指向被删除元素之后的位置的迭代器。

例如:

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
  unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}};
  auto it = umm.find(2);
  umm.erase(it);
  for (auto &x : umm) {
    cout << x.first << ": " << x.second << endl;
  }
  return 0;
}

输出:

1: one
3: three

在这个例子中,我们定义了一个unordered_multimap,然后用find()函数找到了键值为2的元素,再用erase()函数删除,最后打印unordered_multimap的内容。

用法2

unordered_multimap::size_type unordered_multimap::erase(const unordered_multimap::key_type& key);

该用法会删除所有键为key的元素,并返回被删除元素的个数。

例如:

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
  unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}, {2, "二"}, {3, "三"}};
  auto count = umm.erase(2);
  cout << "删除了" << count << "个元素" << endl;
  for (auto &x : umm) {
    cout << x.first << ": " << x.second << endl;
  }
  return 0;
}

输出:

删除了2个元素
1: one
3: three
3: 三

在这个例子中,我们定义了一个unordered_multimap,然后用erase()函数删除了所有键值为2的元素,最后打印unordered_multimap的内容。

用法3

void unordered_multimap::erase(const unordered_multimap::const_iterator first, const unordered_multimap::const_iterator last);

该用法会删除[first,last)之间的元素,其中last不包括在内。

例如:

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
  unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}, {2, "二"}, {3, "三"}};
  auto first = umm.find(2);
  auto last = umm.find(4);
  umm.erase(first, last);
  for (auto &x : umm) {
    cout << x.first << ": " << x.second << endl;
  }
  return 0;
}

输出:

1: one
3: three
3: 三

在这个例子中,我们定义了一个unordered_multimap,然后用find()函数找到了键值为2和4的元素,再用erase()函数删除这两个元素之间的元素,最后打印unordered_multimap的内容。

用法4

void unordered_multimap::erase(const unordered_multimap::key_type& key);

该用法会删除所有键为key的元素。

例如:

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
  unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}, {2, "二"}, {3, "三"}};
  umm.erase(2);
  for (auto &x : umm) {
    cout << x.first << ": " << x.second << endl;
  }
  return 0;
}

输出:

1: one
3: three
3: 三

在这个例子中,我们定义了一个unordered_multimap,然后用erase()函数删除所有键值为2的元素,最后打印unordered_multimap的内容。

总结一下,unordered_multimap的erase()函数可以用来删除单个元素、指定键值的所有元素、指定范围的多个元素。熟练掌握这些用法,会为我们在unordered_multimap中进行元素操作提供很大的便利。

结论

本文介绍了unordered_multimap的erase()函数的四种用法,分别是删除单个元素、删除指定键值的所有元素、删除指定范围的多个元素和删除所有键为指定值的元素。熟练掌握这些用法,能够帮助程序员更好地在unordered_multimap中进行元素操作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程