如何(如果满足谓词从容器中移除?
How to (re)move from a container if predicate is satisfied?
如何使用 STL 算法模块将元素移动到 aux_list
?
std::remove_copy_if( list.begin( ), list.end( ), std::back_inserter( aux_list ),
[]( const value_type& item_ptr )
{
return !item_ptr->is_valid( );
} );
std::remove_copy_if(
std::make_move_iterator(list.begin()),
std::make_move_iterator(list.end()),
std::back_inserter(aux_list),
[](const value_type& item_ptr) { return !item_ptr->valid(); });
请注意,元素仍然全部存在于 list
中 - 它们实际上并未被删除(这是一个奇怪的命名算法 - 将其视为 copy_unless()
)。所以现在你将有一堆处于未指定状态的元素。
如何使用 STL 算法模块将元素移动到 aux_list
?
std::remove_copy_if( list.begin( ), list.end( ), std::back_inserter( aux_list ),
[]( const value_type& item_ptr )
{
return !item_ptr->is_valid( );
} );
std::remove_copy_if(
std::make_move_iterator(list.begin()),
std::make_move_iterator(list.end()),
std::back_inserter(aux_list),
[](const value_type& item_ptr) { return !item_ptr->valid(); });
请注意,元素仍然全部存在于 list
中 - 它们实际上并未被删除(这是一个奇怪的命名算法 - 将其视为 copy_unless()
)。所以现在你将有一堆处于未指定状态的元素。