📅  最后修改于: 2023-12-03 15:13:56.321000             🧑  作者: Mango
forward_list
是C++ STL中的单向链表容器,remove()
和remove_if()
是该容器提供的两个用于删除元素的成员函数。remove()
可以删除指定值的元素,remove_if()
可以删除满足某个条件的元素。
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
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
。