📌  相关文章
📜  C++ STL中的forward_list :: remove()和forward_list :: remove_if()(1)

📅  最后修改于: 2023-12-03 15:13:56.321000             🧑  作者: Mango

C++ STL中的forward_list::remove()和forward_list::remove_if()

介绍

forward_list是C++ STL中的单向链表容器,remove()remove_if()是该容器提供的两个用于删除元素的成员函数。remove()可以删除指定值的元素,remove_if()可以删除满足某个条件的元素。

forward_list::remove()
用法
void remove(const value_type& val);
参数
  • val:要删除的元素的值。
返回值

无。

示例
#include <forward_list>
#include <iostream>

int main()
{
    std::forward_list<int> flist{ 1, 2, 3, 4, 5 };
    flist.remove(3);
    for (auto i : flist) {
        std::cout << i << " ";
    }
    return 0;
}

输出:

1 2 4 5
forward_list::remove_if()
用法
template< class UnaryPredicate >
void remove_if(UnaryPredicate p);
参数
  • p:一元谓词(即接受一个参数并返回bool类型的函数),该函数用于判断是否要删除该元素。如果p返回true,则该元素将被删除。
返回值

无。

示例
#include <forward_list>
#include <iostream>

int main()
{
    std::forward_list<int> flist{ 1, 2, 3, 4, 5 };
    flist.remove_if([](int i) { return i % 2 == 0; });
    for (auto i : flist) {
        std::cout << i << " ";
    }
    return 0;
}

输出:

1 3 5
注意事项
  • remove()remove_if()都会删除所有符合条件的元素,而不是只删除一个。
  • remove_if()并不保证保持原有元素的顺序。如果需要保持顺序,可以使用std::list
参考文献