【发布时间】:2018-11-01 05:26:02
【问题描述】:
我已经搜索了 stackoverflow 并找到了我的问题的部分答案: How to remove elements from a vector based on a condition in another vector? 在我的例子中,我有两个向量,一个包含整数,一个包含共享指针 (std::shared_ptr),我无法计算出指针算法以使代码正常工作。
class someAbstractClass
{
};
class someClass : public someAbstractClass
{
};
std::vector<int> condition;
std::vector<std::shared_ptr< someAbstractClass >> container;
condition.push_back(0);
condition.push_back(1);
condition.push_back(0);
container.push_back( std::make_shared< someClass > );
container.push_back( std::make_shared< someClass > );
container.push_back( std::make_shared< someClass > );
std::erase( std::remove_if( container.begin(), conatiner.end(),
[&] ( const std::shared_ptr< someAbstractClass > &s )
{
return condition[ &s - &(*container.begin()) ] == 1;
} ), container.end() );
有没有办法让它工作?
【问题讨论】:
标签: c++ stl shared-ptr