Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
端迭代器在非连续的C++容器中指向何处?_C++_Iterator - Fatal编程技术网

端迭代器在非连续的C++容器中指向何处?

端迭代器在非连续的C++容器中指向何处?,c++,iterator,C++,Iterator,在类似std::vector的情况下::end迭代器将指向最后一个元素之后的元素。不能取消引用此迭代器,但可以将其与另一个迭代器进行比较。如果您将另一个迭代器与end进行比较,您就知道您已经到达了容器的末尾。在容器不是数组的情况下,例如树或链表,这些结束迭代器的值与其他的迭代器相比,用< p>,C++标准以公理化的方式定义结束迭代器值: 22.2.1一般容器要求[容器.要求.一般] begin返回一个迭代器,该迭代器引用 容器end返回一个迭代器,该迭代器超过了结束值 对于容器。如果容器为空,

在类似std::vector的情况下::end迭代器将指向最后一个元素之后的元素。不能取消引用此迭代器,但可以将其与另一个迭代器进行比较。如果您将另一个迭代器与end进行比较,您就知道您已经到达了容器的末尾。在容器不是数组的情况下,例如树或链表,这些结束迭代器的值与其他的迭代器相比,用

< p>,C++标准以公理化的方式定义结束迭代器值:

22.2.1一般容器要求[容器.要求.一般]

begin返回一个迭代器,该迭代器引用 容器end返回一个迭代器,该迭代器超过了结束值 对于容器。如果容器为空,则开始==结束

“超越终点”是您唯一可以使用的公理化定义。这就是你能得到的。每个C++实现都可以以任何方式实现结束迭代器值,以及其他相关要求。举个例子:一种可能是在满足所有其他要求的情况下,对结束迭代器值使用null指针,即减量操作生成一个迭代器,指向非空容器中的最后一个元素,将迭代器递增到最后一个元素生成此实现null指针


当然,这不是唯一可能的实现,但是无论C++编译器的实际实现与一般格式的C++代码一般无关。格式良好的C++代码不需要将特定迭代器与空指针进行比较,明确地检查结束迭代器值,它将与任何结束返回进行比较。

< P> C++标准以公理化方式定义结束迭代器值:

22.2.1一般容器要求[容器.要求.一般]

begin返回一个迭代器,该迭代器引用 容器end返回一个迭代器,该迭代器超过了结束值 对于容器。如果容器为空,则开始==结束

“超越终点”是您唯一可以使用的公理化定义。这就是你能得到的。每个C++实现都可以以任何方式实现结束迭代器值,以及其他相关要求。举个例子:一种可能是在满足所有其他要求的情况下,对结束迭代器值使用null指针,即减量操作生成一个迭代器,指向非空容器中的最后一个元素,将迭代器递增到最后一个元素生成此实现null指针


当然,这不是唯一可能的实现,但是无论C++编译器的实际实现与一般格式的C++代码一般无关。格式良好的C++代码不需要将特定迭代器与空指针进行比较,明确地检查结束迭代器值,它将与任何结束返回进行比较。请指定一个特定的编译器。实现这一点的自然方法是使用一个表示空值的哨兵。@πάνταῥεῖ — 它不是实现定义的。它是特定于实现的。定义的实现意味着需要实现来记录其行为。@PeteBecker很抱歉。但它是特定于编译器的。@πάνταῥεῖ 仅当编译器设置标准库时。这可能是可以覆盖的。libc++/libstdc++有人吗?这是实现定义的,请指定一个特定的编译器。实现这一点的自然方法是使用一个表示空值的哨兵。@πάνταῥεῖ — 它不是实现定义的。它是特定于实现的。定义的实现意味着需要实现来记录其行为。@PeteBecker很抱歉。但它是特定于编译器的。@πάνταῥεῖ 仅当编译器设置标准库时。这可能是可以覆盖的。libc++/libstdc++有人吗?