在C++中,如何获得指向矢量的指针?

A. *_*Rex 3 c++ pointers vector

我正在编写一些C++代码来处理大量变化的向量,因此不断重新分配.

我希望得到这些向量的"指针",即使在重新分配向量之后仍然有效.更具体地说,我只想要这些"指针"来记住它们指向哪个向量以及它们指向的索引.当我使用标准(*ptr)语法取消引用它们时,我只是希望它们进行明显的查找.

显然,重新分配后实际指针无效,我的理解是迭代器在重新分配后也无效.另请注意,我不关心元素是否在我的对象之前插入,因此这些"指针"实际上不必记住除了向量和索引之外的任何内容.

现在,我可以轻松地自己写这样的课程.有谁(Boost?STL?)已经为我做过了吗?

编辑:答案没有解决我的问题. 我问这个功能是不是任何标准库. 我把回答视为"不"?

tst*_*ner 22

尝试std :: pair <vector*,int>,因为向量的位置和元素的索引都没有变化.
或者,作为一个类:

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];}
};
Run Code Online (Sandbox Code Playgroud)

这是我想到的最简单的解决方案,因为STL和Boost都没有包含任何更容易做到的事情.