bqu*_*nin 5 c++ containers pointers
我在向量中找到一个元素时遇到了一些问题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;
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有成功,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();
}
Run Code Online (Sandbox Code Playgroud)
尝试:
std::find_if(blocks.begin(), blocks.end(),
[block](std::shared_ptr<Block> const& i){ return i.get() == block; });
Run Code Online (Sandbox Code Playgroud)