Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

unordered_multiset::erase

公众成员函数  <unordered_set>
by position (1)
iterator erase ( const_iterator position );
by key (2)
size_type erase ( const key_type& k );
range (3)
iterator erase ( const_iterator first, const_iterator last );

删除元素

unordered_multiset容器中移除单个元素或一组元素([first,last))。

通过调用每个元素的析构函数删除元素,删除元素的数量有效地减少容器的大小。

☲  参数


position
指向要从unordered_multiset中删除的单个元素的迭代器。

成员类型const_iterator是前向迭代器类型。
K
移除的值。

成员类型key_type是容器中元素的类型。在unordered_multiset容器中, 它与value_type相同,定义为类的第一个模板形参(Key)的别名。
first, last
在unordered_multiset容器中指定要删除的范围的迭代器:[first,last)。即,范围包含firstlast之间的所有元素, 包括first所指向的元素,但不包括last所指向的元素。

请注意,unordered_multiset容器不遵循任何特定的顺序来组织其元素,因此,范围删除的效果可能不容易预测。
成员类型const_iterator是前向迭代器类型。

☉  返回值



版本(1)和(3)返回一个迭代器,指向最后一个被擦除的元素之后的位置。

版本(2)返回被擦除的元素的数量。

成员类型iterator是前向迭代器类型。
size_type是一种无符号整型。

unordered_multiset容器中的所有迭代器都具有对元素的const访问权限:元素可以插入或移除,但不能在容器中修改。

☣  示例



// unordered_multiset::erase
#include &;t;iostream>
#include &;t;string>
#include &;t;unordered_set>

int main ()
{
  std::unordered_multiset&;t;std::string> myums =
  {"fish","duck","cow","cow","pig","hen","sheep"};

  myums.erase ( myums.begin() );                    // erasing by iterator
  myums.erase ( "sheep" );                          // erasing by key
  myums.erase ( myums.find("fish"), myums.end() );  // erasing by range

  std::cout &;t;&;t; "myums contains:";
  for ( const std::string& x: myums ) std::cout &;t;&;t; " " &;t;&;t; x;
  std::cout &;t;&;t; std::endl;

  return 0;
}

输出:
myums contains: pig cow cow

✥ 复杂度



平均情况:删除的元素数量呈线性(对于版本(1)和(2)是常数)。
最坏情况:容器大小呈线性。

☣ 迭代器的有效性



只有被移除元素的迭代器和引用才会失效。
其余的则未受影响。
c++11
未被操作移除的等效元素的相对迭代顺序被保留。
c++14
未被该操作删除的元素的相对迭代顺序被保留。

🍄  另请参阅



unordered_multiset::clear 清除内容(公众成员函数)
unordered_multiset::insert 插入元素(公众成员函数)
unordered_multiset::find 获取元素迭代器(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图