#include <iostream>
class MyContainer {
public:
int arr[3] = { 1, 2, 3 };
class MyIterator {
private:
size_t _index;
MyContainer& _ref;
public:
MyIterator(size_t index, MyContainer& container):
_index(index),
_ref(container) {}
MyIterator& operator++() {
++_index;
return *this;
}
int& operator*() {
return _ref.arr[_index];
}
bool operator!=(const MyIterator& b) const {
return this->_index != b._index;
}
};
MyIterator begin() {
return MyIterator(0, *this);
}
MyIterator end() {
return MyIterator(3, *this);
}
};
int main(void) {
MyContainer container;
for (int& i: container) {
i *= 2;
}
for (const int& i: container) {
std::cout << i << std::endl;
}
return 0;
}