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 |
删除第一个元素(公众成员函数) |