When we add(or subtract) an integral value to (or from) a pointer, the result is a new pointer. That new pointer points to the element the given number ahead of (or behind) the original pointer: (pp.119 c++ primer 5ed)
我也从书上了解到,指针是迭代器(pp.118 c++ primer 5ed)。
问题
我还可以声称迭代器上的算术运算创建了一个全新的迭代器吗?
最佳答案
这本书描述了一种情况,比如说,p + n
,其中 p
是一个指针,n
是一个整数。该表达式产生一个指针类型的新值。由您决定将值存储在何处;您也可以决定根本不存储它。
递增指针,即写入 p += n
,将原始指针的值更改为 p + n
。
它对迭代器的工作方式是相同的:it + n
产生一个新的迭代器,而 it += n
改变现有的迭代器。
注意 第一个表达式可以写成std::next(it, n)
, 而第二个应该写成 std::advance(it, n)
,对于迭代器和指针。
关于c++ - Iterator increment results 是一个新的迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48608609/