【发布时间】:2011-10-16 14:57:46
【问题描述】:
如果您只有指向要删除的元素的迭代器,是否可以从std::list 中删除元素?我有大量使用迭代器来列出元素的函数,如果必须将拥有的 list 传递给它们每个人,那将是一个巨大的不便。
【问题讨论】:
-
请注意,以这种方式使用迭代器与将其用作设计模式是相悖的,但这并不是说在许多情况下(例如查看集合的元素)不是正确的做法。
-
@Jeremy:实际上,这并不是反对将迭代器用作设计模式。但是,它在迭代器失效方面的语义很差。在许多容器中,删除一项会使所有迭代器失效,包括您当前用于迭代元素的迭代器。
-
@Andre 是的,但我总是会使用
list,如果你从中删除一个项目,它不会使其他迭代器失效。还有@nj,我认为这与这个问题无关。