我在shared_ptr
.
这是我最终得到的结果:
std::vector<std::shared_ptr<Block>> blocks;
bool contains(Block* block) {
for (auto i = blocks.begin(); i != blocks.end(); ++i) {
if ((*i).get() == block) {
return true;
}
}
return false;
}
std::find
但是,我什至没有设法做到这一点std::find_if
。有没有更符合 c++ 的方法来实现这一点?
编辑:这是我得到答案后的代码:
bool contains(Block* block) {
auto found = std::find_if(blocks.begin(), blocks.end(), [block](std::shared_ptr<Block> const& i){
return i.get() == block;
});
return found != blocks.end();
}