c++ - end() 在 STL 容器中是如何实现的?

标签 c++ stl

所以当我们需要从头到尾遍历一个容器时,我们会写类似

for (i = v->begin(); i != v->end(); i++)

假设 i 是容器 v 的迭代器。

我的问题是“什么保证 end 总是指向容器中最后一个元素之后的元素?” STL 是如何确保这种行为的,这种情况有没有可能是不正确的?

最佳答案

STL 通过始终存储如下内容来确保这种行为:

vector

在结尾(双关语)中,end() 并不重要,只要始终是 end() (显然,不能与任何其他节点混淆)。

关于c++ - end() 在 STL 容器中是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3810312/

相关文章:

c++ - 与已经运行的程序交互

c++ - 为什么不使用 std::is_constructible 编译?

c++ - 为什么 C++ STL iostreams 不是 "exception friendly"?

c++ - std::queue 和 std::deque 清理

c++ - 如何在 C++ 中传递 STL 对象的消息,例如 MPI 中的 std::map?

c++ - 使用 fstream 显式保存文件而不关闭 C++ 中的文件

c++ - 带有 Realtek ALC888 的事件耳机插孔 (Windows XP)

c++ - 将CMake构建的库链接到预构建的目标文件

c++ - 在 STL 容器中查找迭代器的索引 - 需要模板函数

c++ - 将值 vector 复制到一行中的对 vector