std::flat_set<Key,Compare,KeyContainer>::erase
来自cppreference.com
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) 被移除的元素个数。(
0
或 1
)。5) 被移除的元素个数。
异常
1-3) 不抛出
4,5) 任何
Compare
对象所抛的异常。复杂度
取决于底层容器。典型为线性。本节未完成 原因:revision required |
示例
运行此代码
#include <flat_set> #include <iostream> int main() { std::flat_set<int> c = {1, 2, 3, 4, 1, 2, 3, 4}; auto print = [&c] { std::cout << "c = { "; for (int n : c) std::cout << n << ' '; std::cout << "}\n"; }; print(); std::cout << "移除所有奇数:\n"; for (auto it = c.begin(); it != c.end();) { if (*it % 2 != 0) it = c.erase(it); else ++it; } print(); std::cout << "移除 1,移除个数:" << c.erase(1) << '\n'; std::cout << "移除 2,移除个数:" << c.erase(2) << '\n'; std::cout << "移除 2,移除个数:" << c.erase(2) << '\n'; print(); }
参阅
清除内容 (公开成员函数) |