c++自定class適用於foreach的寫法

只要在class提供iterator和const iterator

就可以用c++11支援的for loop來存取了

在閱讀上更為簡潔

#include <vector>
#include <iostream>

using namespace std;

class List
{
public:
typedef vector<int>::iterator iterator;
typedef vector<int>::const_iterator const_iterator;

iterator begin() { return arr.begin(); }
iterator end() { return arr.end(); }
const_iterator begin() const { return arr.cbegin(); }
const_iterator end() const { return arr.cend(); }

void add(int n) { arr.push_back(n); }
private:
vector<int> arr;
};

int main()
{
List m;
m.add(1);
m.add(2);
m.add(3);

for(int i : m) {
cout << i << endl;
}
return 0;
}