std::set::erase
STD::set::擦除
| (1) | |
---|---|---|
void erase( iterator pos | (until C++11) | |
iterator erase( const_iterator pos | (since C++11) | |
iterator erase( iterator pos | (since C++17) | |
| (2) | |
void erase( iterator first, iterator last | (until C++11) | |
iterator erase( const_iterator first, const_iterator last | (since C++11) | |
size_type erase( const key_type& key | (3) | |
从容器中移除指定的元素。
1%29移除pos
...
2%29移除范围内的元素。[first; last)
中的有效范围。*this
...
3%29删除元素%28,如果存在元素%29,其键等价于key
...
对擦除元素的引用和迭代器无效。其他引用和迭代器不受影响。
迭代器pos
必须是有效的和可撤销的。因此end()
迭代器%28有效,但不可取消引用%29不能用作pos
...
参数
pos | - | iterator to the element to remove |
---|---|---|
first, last | - | range of elements to remove |
key | - | key value of the elements to remove |
返回值
1-2%,29,Iterator,在最后一次删除元素之后.
3%,29个元素被移除。
例外
1,2%29%28无29
3%29由Compare
对象。
复杂性
给定实例c
成set
*
1%29摊销常数
2%29log(c.size())
+
std::distance
(first, last)
3%29log(c.size()) + c.count(k)
例
二次
#include <set>
#include <iostream>
int main()
{
std::set<int> c = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// erase all odd numbers from c
for(auto it = c.begin( it != c.end( )
if(*it % 2 == 1)
it = c.erase(it
else
++it;
for(int n : c)
std::cout << n << ' ';
}
二次
产出:
二次
2 4 6 8
二次
另见
clear | clears the contents (public member function) |
---|
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。