相关疑难解决方法(0)

设计一个懒惰的向量:const的问题

我写了一个小的"懒矢量"类(或延迟矢量),它应该看起来像一个std::vector可用的地方std::vector,但它可以加载它的元素"懒惰",即它将加载元素n(可能还有一些)每当有人访问元素时从磁盘n.(原因是在我的应用程序中,并非所有元素都适合内存.)

这是这个LazyVector类,但是const使用这样一个向量的成员函数存在问题,见下文.

template<class T>
class LazyVector {
  std::vector<T> elems_;
  void fetchElem(unsigned n){
    // load the n-th elem from disk into elems_ etc
  }
public:
  const T& operator[](unsigned n) const {
    fetchElem(n); // ERROR: ... discards qualifiers       
    return elems_[n];
  }
  T& operator[](unsigned n) {
    fetchElem(n);
    return elems_[n];
  }
  // and provide some other std::vector functions
};
Run Code Online (Sandbox Code Playgroud)

正如我所说,当一个const成员函数要求一个元素时,会出现问题LazyVector.根据性质LazyVector,访问元素不是 const,即它将改变vec下面的向量,这在此上下文中是被禁止的.该foo …

c++ lazy-loading const vector

0
推荐指数
1
解决办法
1383
查看次数

标签 统计

c++ ×1

const ×1

lazy-loading ×1

vector ×1