C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 你可以在`std :: unique_ptr`的容器上使用`std :: remove_if`?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个std :: vector< std :: unique_ptr< SomeType> >是合法的使用
remove_if就可以了换句话说,给出这个代码
std::vector<std::unique_ptr<SomeType> > v;
//  fill v,all entries point to a valid instance of SomeType...
v.erase( std::remove_if( v.begin(),v.end(),someCondition ),v.end() );

我保证擦除之后仍然在v中的所有指针
有效.我知道给出直观的实现
std :: remove_if,并给出了我所看到的所有实现,
他们会.我想知道标准中有没有什么
保证它;即std :: remove_if不允许复制
任何有效条目,无需将副本重新复制到其最终
位置.

(我当然是假设条件不复制,如果
条件有如下特征:

struct Condition
{
    bool operator()( std::unique_ptr<SomeType> ptr ) const;
};

那么当然所有的指针都将无效
的remove_if.)

解决方法

N3290中的25.3.8说明删除功能

这意味着它取决于你的谓词操作符.由于您的谓词不创建副本,因此元素不会被复制.

大佬总结

以上是大佬教程为你收集整理的c – 你可以在`std :: unique_ptr`的容器上使用`std :: remove_if`?全部内容,希望文章能够帮你解决c – 你可以在`std :: unique_ptr`的容器上使用`std :: remove_if`?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。