我不确定这是否是合法的事情-通过引用返回迭代器:
请注意,我的 vector 本身包含元素和,而不是指针。
在当前状态下,我已按值将其保留(不带&)。
是否有关于迭代器的共识,还是可以同时使用两种方式?
最佳答案
重点是什么?迭代器本身就是对 vector 内部某些内容的引用。您是否要给某人一个可以在内部修改的迭代器?也就是说,向迭代器提供引用的类本身会增加它的引用(将其指向 vector 中的另一件事),并且客户端以某种方式使其迭代器指向正确的对象,从而导致它之前称为getElement()?那是我能想到的唯一引用迭代器的应用,对我来说,它肯定也很难闻。
但更重要的是,迭代器存在严重问题,因此可能会持续存在。迭代器无效。如果您在界面的内部具有迭代器,并且某些 vector 被删除或添加到 vector 中,则您将无法保证客户端的迭代器仍然有效。然后,客户端访问其无效的迭代器,并且发生未定义的行为(即CRASH)。
关于c++ - 将引用返回给迭代器是一种好习惯吗? (甚至有意义)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7435608/