У меня есть объект, содержащий вектор. Я хочу перебрать этот объект, получая элементы в этом векторе. Это нормально, пока я только читаю. Написание - это совсем другая история.
#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;
}
Я думал, что l oop изменит объект 1. Я использую ссылку на объект-итератор 2. Функция разыменования дает ссылку, но это не так ' т:
clang++ -std=c++17 -o tester test.cxx && ./tester
1
1