我正在编写一些 C++ 代码来操纵一堆大小不断变化的 vector ,因此不断地重新分配。
我想得到一个指向这些 vector 的“指针”,即使在重新分配 vector 后它仍然有效。更具体地说,我只想让这些“指针”记住它们指向哪个 vector 以及它们指向的索引。当我使用标准 (*ptr) 语法取消引用它们时,我只想让它们进行明显的查找。
显然,实际指针在重新分配后将无效,我的理解是迭代器在重新分配后也无效。还要注意,我不关心元素是否插入到我的对象之前,所以这些“指针”实际上不需要记住任何东西,只需要记住一个 vector 和一个索引。
现在,我可以轻松地自己编写这样的类。有没有人(Boost?STL?)已经为我完成了?
编辑:答案没有解决我的问题。 我问这个功能是否是任何标准库。我认为答案是“否”?
最佳答案
尝试 std::pair
或者,作为一个类(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/