从C++中获取矢量指针

Sam*_*Sam 2 c++ stl vector

有没有一种简单的方法来创建一个指向矢量元素的指针向量?

即比下面容易

std::vector<T*> fn(std::vector<T> &v)
{
  std::vector<T*> r;

  for (int i = 0; i < v.size(); i++)
  {
    r.push_back(&v[i]);
  }

  return r;
}
Run Code Online (Sandbox Code Playgroud)

编辑:通过引用传入的向量

Ben*_*oit 6

我认为没理由你需要这样做.如果你长大v你的指针可能会变得无效; 并且r[i]只是别名&v[i].

如果你真的需要传递指针(我们仍然不明白为什么),你可以传递&v[0]和向量的大小.鉴于所有实现std::vector必须保证向量中的元素连续存储在内存中,您可以从第一个元素的地址和向量的大小推导出所有地址.