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

std::

forward_list::erase_after

公众成员函数  <forward_list>
iterator erase_after (const_iterator position);
iterator erase_after (const_iterator position, const_iterator last);

删除元素

从forward_list容器中移除单个元素(position后面的元素)或一段元素((position,last))。

通过删除元素的数量来减少容器的大小,这些元素将被销毁。

与其他标准序列容器不同,list和forward_list对象被专门设计为在任意位置高效地插入和删除元素, 即使是在序列的中间。

☲  参数


position
指向forward_list容器中的一个元素的迭代器。删除的(第一个)元素是这个元素之后的元素。
成员类型const_iterator是指向元素的前向迭代器类型。
last
指向要删除的最后一个元素之后的元素的迭代器。被移除的元素的范围是开区间(position,last), 它包括position和last之间的所有元素,但不包括position和last本身。
成员类型const_iterator是指向元素的前向迭代器类型。

☉  返回值



一个迭代器,指向函数调用所擦除的最后一个元素之后的元素,该元素在第二个版本中是最后一个。
如果操作删除了序列中的最后一个元素,则返回值为end.
成员类型迭代器是指向元素的前向迭代器类型。

☣  示例



// erasing from forward_list
#include <iostream>
#include <forward_list>

int main ()
{
  std::forward_list<int> mylist = {10, 20, 30, 40, 50};

                                            // 10 20 30 40 50
  auto it = mylist.begin();                 // ^

  it = mylist.erase_after(it);              // 10 30 40 50
                                            //    ^
  it = mylist.erase_after(it,mylist.end()); // 10 30
                                            //       ^

  std::cout << "mylist contains:";
  for (int& x: mylist) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}

输出:
mylist contains: 10 30

✥ 复杂度



被删除元素的数量呈线性(析构)。

☣ 迭代器的有效性



指向被函数删除的元素的迭代器、指针和引用将失效。
所有其他迭代器、指针和引用都保持其有效性。

⇄ 数据竞争


容器被修改。
删除的元素被修改。尽管需要迭代,但并发访问或修改其他元素是安全的.
包含已删除元素的范围则不存在。

☂ 异常安全性



如果position(或range)是有效的,函数永远不会抛出异常(no-throw保证)。
否则,它将导致未定义的行为。

🍄  另请参阅



forward_list::remove 删除具有特定值的元素(公众成员函数)
forward_list::insert_after 插入元素 (公众成员函数)
forward_list::splice_after 从另一个forward_list转移元素(公众成员函数)
forward_list::unique 删除重复的值(公众成员函数)
forward_list::pop_front 删除第一个元素(公众成员函数)

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