c++ - 从 C++ 中的 vector 获取指针 vector

标签 c++ stl vector

是否有一种简单的方法来创建指向 vector 元素的指针 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;
}

编辑:通过引用传入 vector

最佳答案

我看不出您需要这样做的理由。如果你增长 v,你的指针可能会变得无效;和 r[i] 只是 &v[i] 的别名。

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

关于c++ - 从 C++ 中的 vector 获取指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792607/

相关文章:

c++ - 确保每个状态只有一个

c++ - 处理 utf-8 字符串 gtk

c++ - 连接由 C++ 中的类方法提供的字符串

c++ - 创建和管理 STL 列表的子列表

c++ - 读取 std::vector<unsigned char> 中特定位置的数据

c++ - 我们可以安全地依赖迭代器 v.end() 的位置吗?

c++ - 在 autoconf 中使用 doxygen 宏

c++ - 在内存不足之前我可以声明多少个 const 变量?

c++ - 奇怪的运行时错误

c++ - 像 std::vector 这样的 vector 类的简单实现