指向前一个值,没有自减指针
Point to previous value without decrementing pointer
这是一个非常简单的问题。
假设我有两个迭代器,it1
和it2
。给定it1
的值,我想将it2
定义为指向前面一个地址的位置。如果我能在一行中完成就好了,比如:
vector<int>::iterator it2 = --it1;
然而,这同时减少it1,所以我必须重新增加it1。
vector<int>::iterator it2 = --it1;
++it1;
如果这两行涉及到一个性能密集型循环,我将有大量的it1
来回没有很好的理由,只是为了定义it2
。另一方面,如果我这样做:
vector<int>::iterator it2 = it1;
--it2;
这也不太理想,因为它涉及两个步骤。有办法一次做完吗?
你要找的是std::prev
:
vector<int>::iterator it2 = std::prev(it1);
对于vector
的迭代器、指针和一般的随机访问迭代器,也可以使用-
:
vector<int>::iterator it2 = it - 1;
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 引用一个已擦除类型(void*)的指针
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何将指针从一个void函数传递到另一个C++
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- 不明白迭代器,引用和指针失效,一个例子
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 将指针分配给另一个指针时会发生什么情况?
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++将一个指针分配给另一个指针时执行的类型检查
- 创建一个棋盘格或"Interweave"两个链接列表。IE 更改两个链表的指针
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 取消引用结束指针到数组类型的一个
- 更改一个指针后更改乘法对象
- const和指针(一个节点示例)
- 从函数返回指针.一个指针的值未更新