遍历对象的麻烦

时间:2020-05-28 17:56:31

标签: c++ class iterator

我有一个包含矢量的对象。我想遍历该对象,掌握该向量中的元素。只要我只看书就可以了。写作是另一个故事。

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <vector>
using std::vector;

class data_vector {
private:
  vector<float> coefficients;
public:
  data_vector() : coefficients( vector<float>(5,1.) ) {};
  void trace() { cout << coefficients[0] << endl; };

private:
  int seek{0};
public:
  data_vector &begin() { seek = 0; return *this; };
  data_vector &end()   { seek = coefficients.size(); return *this; };
  bool operator!=( const data_vector &test ) const {
    return seek<test.seek; };
  void operator++() { seek++; };
  float &operator*() { return coefficients.at(seek); };
};

int main() {

  data_vector
    outdata;
  outdata.trace();
  for ( float &d : outdata )
    d = 2. ;
  outdata.trace();

  return 0;
}

我认为循环会改变对象 1.我正在使用对迭代器对象的引用 2.解引用函数产生一个引用, 但事实并非如此:

clang++ -std=c++17 -o tester test.cxx && ./tester
1
1

0 个答案:

没有答案