将向量地址分配给迭代器

bcf*_*bcf 6 c++ vector

我希望向量迭代器指向一个向量元素.我有

#include <iostream>
#include <vector>

int main() {
  std::vector<int> vec = {1,2,3,4,5};
  std::vector<int>::iterator it;

  // want "it" to point to the "3" element, so something like
  //   it = &prices[2];
  //   it = &prices.at(2);

}
Run Code Online (Sandbox Code Playgroud)

但这些尝试都不起作用.我想我需要一些返回迭代器的向量函数,而不是地址(?)

Mik*_*our 13

这些尝试都不起作用

实际上,您无法从指向容器元素的指针创建容器迭代器.您只能从容器本身获取它们.

我想我需要一些返回迭代器的向量函数

是的,begin()将迭代器返回到第一个元素.递增以指向您想要的任何元素.第三,

it = vec.begin() + 2;
Run Code Online (Sandbox Code Playgroud)

或者,更一般地说,

it = std::next(std::begin(container), 2);
Run Code Online (Sandbox Code Playgroud)

即使容器不是随机访问也可以工作.


Bil*_*nch 6

获取迭代器的主要方法是使用以下方法之一:

std::vector<int>::begin()
std::vector<int>::end()
std::vector<int>::rbegin()
std::vector<int>::rend()
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

std::vector<int> vec = {1,2,3,4,5};
std::vector<int>::iterator it = std::next(vec.begin(), 2);
Run Code Online (Sandbox Code Playgroud)