Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.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_Input Iterator - Fatal编程技术网

C++ 使用输入迭代器第二次遍历容器

C++ 使用输入迭代器第二次遍历容器,c++,iterator,input-iterator,C++,Iterator,Input Iterator,不能保证使用输入迭代器第二次遍历容器时会以相同的顺序遍历这些值。此外,在输入迭代器递增后,也不能保证其先前的值仍然可以被取消引用 或 InputIterator是一个迭代器,可以读取指向的元素。InputIterator仅保证单次传递算法的有效性:一旦InputIterator i递增,其先前值的所有副本都可能无效 为什么以前值的所有副本都可能无效?这些语句的概念是什么?意思是迭代器只能读取它当前指向的元素,它不知道前面或后面的元素 考虑使用两个迭代器指向std::list 设想如下所示递增这些

不能保证使用输入迭代器第二次遍历容器时会以相同的顺序遍历这些值。此外,在输入迭代器递增后,也不能保证其先前的值仍然可以被取消引用

InputIterator是一个迭代器,可以读取指向的元素。InputIterator仅保证单次传递算法的有效性:一旦InputIterator i递增,其先前值的所有副本都可能无效


为什么以前值的所有副本都可能无效?这些语句的概念是什么?

意思是迭代器只能读取它当前指向的元素,它不知道前面或后面的元素

考虑使用两个迭代器指向
std::list

设想如下所示递增这些值:

Iter0 = Iter1;
Iter1++;
增量后,迭代器集如下所示:

             Item1 ---> Item2 ---> Item3 ---> Item4
Iter0 ------------------↑          ↑
Iter1------------------------------ˈ
Iter1
之前的值存储在
Iter0
中,因此它始终指向
Iter1
之前的元素

现在想象一下,我删除了
Item2

             Item1 ---> Item3 ---> Item4
Iter0 -???              ↑
Iter1-------------------ˈ
Iter1
仍然有效,并指向
Item3


Iter0
Iter1
的前一个值,它不再有效,并指向“nothing”(意味着取消引用此迭代器现在将被视为未定义的行为)。

请用
std::cin
命名您的源代码!你为什么连名字都不提就引用书籍?!
             Item1 ---> Item3 ---> Item4
Iter0 -???              ↑
Iter1-------------------ˈ