【发布时间】:2021-12-30 11:30:33
【问题描述】:
让我们考虑这样的方法:
void World::remove_organism(organism_iterator organism_to_delete)
{
remove_if(begin(organisms_vector), end(organisms_vector), [](const unique_ptr<Organism>& potential_organism_to_del)
{
});
}
我想要实现的是从vector<unique_ptr<Organism>> 中删除iterator 指向的有机体,那么我应该如何比较unique_ptr<Organism> 和std::vector<unique_ptr<Organism>>::iterator?
【问题讨论】:
-
unique_ptr值是唯一的,因此“指向同一个对象”的唯一方法是如果您有两个对同一个unique_ptr的引用。也就是说,无论如何比较持有的指针可能更容易......只需调用get()。 -
@BenVoigt 你能告诉我具体的代码行吗?
-
return potential_organism_to_del.get() == organism_to_delete->get();.. 而且,如果您要删除迭代器指向的元素,为什么不直接调用vector::erase(iterator),因为您知道它已经存在于该容器中。
标签: c++ vector iterator unique-ptr