c – 你可以在`std :: unique_ptr`的容器上使用`std :: remove_i
给定一个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中的所有指针 (我当然是假设条件不复制,如果 struct Condition { bool operator()( std::unique_ptr<SomeType> ptr ) const; }; 那么当然所有的指针都将无效 解决方法
N3290中的25.3.8说明删除功能:
和
这意味着它取决于你的谓词操作符.由于您的谓词不创建副本,因此元素不会被复制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |