如何在STL容器中实现end()?

use*_*403 12 c++ stl

因此,当我们需要从头到尾遍历容器时,我们会写出类似的内容

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

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

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

Dav*_*nco 22

STL通过始终存储这样的东西来确保这种行为:

向量

到底(双关语),也无所谓什么end() 的,只要它总是end()(显然,不能与任何其他节点混淆).

  • Mate,你只为时髦的图形获得+1 :-) (14认同)

Jos*_*shD 3

stl 规范保证 end 将超过 end请参见此处。情况永远如此。具体如何执行此操作取决于实现(例如,有时这些值只是设置为 null),但请放心,只要 v 是有效的指针,您的循环就可以正常进行。