结束迭代器失效规则
关于迭代器失效规则的这个问题,看起来显而易见的是,标准的精神意味着,例如,“在deque中间的擦除使所有迭代器和对deque元素的引用无效”也指末端迭代器。
但是,我无法在标准中明确指出任何地方,严格地说,结束迭代器不是容器中元素的迭代器。
2003年的标准是否明确地表明了这一点?
例如,23.1 / 10:
没有swap()
函数会使任何引用,指针或迭代器引用正在交换的容器元素。 [注意: end()
迭代器不引用任何元素,所以它可能会失效。 - 注意]
我不知道是否可以确定引用元素的迭代器在标准中一直用于排除结束迭代器:/
正如在评论中所说,我想这是为了允许结束迭代器指向容器内的标记值。
例如,典型的双向链接List
实现是创建一个Node
结构,并在List
有一个Node
by值作为结束节点。
上一篇: End iterator invalidation rules
下一篇: Poster with the 8 phases of translation in the C language