c++ - 在 C++ 中,如何获取指向 vector 的指针?

标签 c++ pointers vector

我正在编写一些 C++ 代码来操纵一堆大小不断变化的 vector ,因此不断地重新分配。

我想得到一个指向这些 vector 的“指针”,即使在重新分配 vector 后它仍然有效。更具体地说,我只想让这些“指针”记住它们指向哪个 vector 以及它们指向的索引。当我使用标准 (*ptr) 语法取消引用它们时,我只想让它们进行明显的查找。

显然,实际指针在重新分配后将无效,我的理解是迭代器在重新分配后也无效。还要注意,我不关心元素是否插入到我的对象之前,所以这些“指针”实际上不需要记住任何东西,只需要记住一个 vector 和一个索引。

现在,我可以轻松地自己编写这样的类。有没有人(Boost?STL?)已经为我完成了?

编辑:答案没有解决我的问题。 我问这个功能是否是任何标准库。我认为答案是“否”?

最佳答案

尝试 std::pair,因为 vector 的位置和元素的索引都没有改变。
或者,作为一个类(class):

template<class T> class VectorElementPointer
{
  vector<T>& vectorref;
  typename vector<T>::size_type index;
public:
  VectorElementPointer(vector<T>& vref, typename vector<T>::size_type index):vectorref(vref),index(index){}
  T& operator*() const {return vectorref[index];}
  T* operator->() const {return &vectorref[index];}
};

这是我想到的最简单的解决方案,因为 STL 和 Boost 都没有包含使它更容易实现的任何内容。

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

相关文章:

c++ - 在 C++ 中,如何通过给定对象的成员来查找对象 vector 中的某些项?

html - 在Shiny中使用renderUI显示矢量

c++ - 解决由于类之间的循环依赖而导致的构建错误

c++ - 在 C++ 中测试有效指针

java - 如何在 Java + JNI + C++ 进程中查找内存泄漏

c++ - C++ 中的自动指针 (auto_ptr)

c++ - 双向链表插入无限循环... C++

swift - SceneKit 物理在局部空间中添加速度

c++ - 定义一个工厂函数,该函数返回指向在此工厂函数中创建的函数的指针

c++ - 结构/类成员的显式初始化