std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>::erase
来自cppreference.com
< cpp | container | flat multimap
iterator erase( iterator position ); |
(1) | (C++23 起) |
iterator erase( const_iterator pos ); |
(2) | (C++23 起) |
iterator erase( const_iterator first, const_iterator last ); |
(3) | (C++23 起) |
size_type erase( const Key& key ); |
(4) | (C++23 起) |
template< class K > size_type erase( K&& x ); |
(5) | (C++23 起) |
从容器移除指定的元素。保留未被移除的等价元素的顺序。
1,2) 移除位于 pos 的元素。
3) 移除范围
[
first,
last)
中的元素,它必须是 *this 中的合法范围。4) 移除键等价于 key 的所有元素。
5) 移除键比较等价于值 x 的所有元素。此重载只有在限定标识 Compare::is_transparent 合法并指代类型,且
iterator
与 const_iterator
均不可从 K
隐式转换时才会参与重载决议。它允许调用此函数时无需构造 Key
的实例。迭代器失效上的信息复制自此处 |
迭代器 pos 必须合法且可解引用。从而 end() 迭代器(合法,但不可解引用)不能用作 pos 所用的值。
参数
pos | - | 指向要移除的元素的迭代器 |
first, last | - | 要移除的元素范围 |
key | - | 要移除的元素键值 |
x | - | 任何能与键通透比较的类型的值,指代要移除的元素 |
返回值
1-3) 后随最后被移除的元素的迭代器。
4) 被移除的元素个数。
5) 被移除的元素个数。
异常
1-3) 不抛出
4,5) 任何
Compare
对象所抛的异常。复杂度
取决于底层各容器。典型为线性。本节未完成 原因:revision required |
示例
运行此代码
#include <flat_map> #include <iostream> int main() { std::flat_multimap<int, std::string> c = { {1, "one" }, {2, "two" }, {3, "three"}, {4, "four"}, {5, "five"}, {6, "six" } }; // 从 c 移除所有奇数 for (auto it = c.begin(); it != c.end(); ) { if (it->first % 2 != 0) it = c.erase(it); else ++it; } for (auto& p : c) std::cout << p.second << ' '; std::cout << '\n'; }
输出:
two four six
参阅
清除内容 (公开成员函数) |