C++ 将向量地址分配给迭代器

C++ 将向量地址分配给迭代器,c++,vector,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 = &price

我希望向量迭代器指向向量元素。我有

#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);

}
#包括
#包括
int main(){
向量向量向量={1,2,3,4,5};
std::vector::it迭代器;
//希望“it”指向“3”元素
//it=&prices[2];
//it=&prices.at(2);
}

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

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

std::vector<int>::begin()
std::vector<int>::end()
std::vector<int>::rbegin()
std::vector<int>::rend()
std::vector::begin()
std::vector::end()
std::vector::rbegin()
std::vector::rend()
就你而言:

std::vector<int> vec = {1,2,3,4,5};
std::vector<int>::iterator it = std::next(vec.begin(), 2);
std::vector vec={1,2,3,4,5};
std::vector::iterator it=std::next(vec.begin(),2);
这两种尝试都不起作用

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

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

是,
begin()
将迭代器返回到第一个元素。增加该值以引用所需的元素。第三,

it = vec.begin() + 2;
或者,更一般地说

it = std::next(std::begin(container), 2);

即使容器不是随机访问,它也可以工作。

it=vec.begin()+2
it=std::next(vec.begin(),2)
或规范答案-RTFM:-)值得注意的是
std::next
仅在C++11中可用,在此之前
it=container.begin();std::advance(it,2)做同样的事情-如果只是更尴尬的话。