std::
forward_list::remove
公众成员函数 <forward_list>
void remove (const value_type& val);
删除具有特定值的元素
从容器中移除所有比较值等于val的元素。这将调用这些对象的析构函数,并按移除的元素数量减少容器大小。
不同于成员函数forward_list::erase_after根据元素的位置(使用迭代器)
来删除元素,这个函数(forward_list::remove)根据元素的值来删除元素。
存在一个类似的函数forward_list::remove_if,它允许使用除相等比较之外的条件来确定一个元素是否被删除。
☲ 参数
-
val
-
要删除的元素的值。
成员类型value_type是容器中元素的类型,在forward_list中定义为第一个模板形参(T)的别名。
☉ 返回值
none
☣ 示例
// remove from forward_list
#include <iostream>
#include <forward_list>
int main ()
{
std::forward_list<int> mylist = {10, 20, 30, 40, 30, 20, 10};
mylist.remove(20);
std::cout << "mylist contains:";
for (int& x: mylist) std::cout << ' ' << x;
std::cout << '\n';
return 0;
} |
输出:
mylist contains: 10 30 40 30 10
✥ 复杂度
容器大小线性(比较)。
☣ 迭代器的有效性
指向被函数删除的元素的迭代器、指针和引用将失效。
所有其他迭代器、指针和引用保持其有效性。
⇄ 数据竞争
容器被修改
删除的元素被修改。并发访问或修改其他元素是安全的,但遍历容器是不安全的。
☂ 异常安全性
如果保证元素之间的相等比较不会抛出异常,则函数永远不会抛出异常(no-throw保证)。
否则,如果抛出异常,容器将保持有效状态(基本保证)
🍄 另请参阅
forward_list::remove_if |
移除满足条件的元素(公共成员函数) |
forward_list::erase_after |
删除元素 (公共成员函数) |
forward_list::pop_front |
删除第一个元素 (公共成员函数) |
forward_list::unique |
删除重复的值 (公共成员函数) |