我有一个 std::vector
我想要 iterator
到向量中的最后一个元素;我将存储这个迭代器供以后使用。
注意:我想要一个迭代器引用它,而不是 std::vector::back
。因为我希望以后能够从 std::vector::begin
计算这个对象的索引。
以下是我将迭代器获取到最后一个元素的逻辑:
std::vector<int> container;
std::vector<int>::iterator it = container.end()--;
由于 std::vector::end
具有 O(1) 时间复杂度,有没有更好的方法来做到这一点?
原文由 Quark 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想你的意思是:
您无意中只是返回
end()
。但是所有这些的问题是当向量为空时会发生什么,否则它们都会在恒定时间内做正确的事情。尽管如果向量为空,则无论如何都没有最后一个元素。存储迭代器时也要小心——它们可能会失效。
请注意,如果
vector<T>::iterator
只是T*
(这将是有效的),则上面的第一种形式是错误的。后两个工作无论如何,所以是可取的。