のベクトルで要素を見つけるのに少し問題があり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();
}