vector<int> v;
// do something...
v.resize(10);
v.push_back(3);
C++ std::vector resizeとreserveの違い | ぬの部屋(仮)
vector<int> v;
// do something...
for (auto itr = v.begin(); itr != v.end(); ++itr) {
cout << *itr << endl;
}
map<int, char> m;
// do something...
for (auto itr = m.begin(); itr != m.end(); ++itr) {
cout << itr->first << " " << itr->second << endl;
}
iteratorは抽象化されたポインタ
値渡しっぽいので元のコンテナの値の変更はできない
値にアクセスするには 「*****」をつける。
ポインタなのでメンバにアクセスする時は「.」ではなく「→」
vector<int> v;
// do something...
for (auto itr = v.rbegin(); itr != v.rend(); ++itr) {
cout << *itr << endl;
}
rbegin()とrend()を使うと逆順のイテレータを返してくれる
さらに範囲ループ(C++ 11 〜?)を使って簡単に書くと
vector<int> v;
// do something...
for (auto& i : v) {
cout << i << endl;
}
map<int, char> m;
// do something...
for (auto& i : m) {
cout << i.first << " " << i.second << endl;
}
範囲ループを使うとi には要素そのものが入るのでそのまま表示ができる。