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