主に競技プログラミングとかで使いそうなところを。
auto
#include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<int> v; for (int i = 0; i < 5; i++) { v.push_back(i); } for (auto it = v.begin(); it != v.end(); ++it) { cout << *it << endl; } return 0; }
配列とかー
#include <iostream> #include <array> using namespace std; int main() { array<int, 10> ary; ary.fill(10); for (int i = 0; i < ary.size(); i++) { ary[i] = i * 2; } return 0; }
ary={}とはおさらば。配列にメソッドがあるっていい。
範囲for文
#include <iostream> #include <array> using namespace std; int main() { array<int, 30> ary; ary.fill(0); for (const int n: ary) { cout << n; } return 0; }
大体foreach的なものだと考えていいのかな。
ラムダ式
#include <iostream> #include <array> #include <algorithm> using namespace std; int main() { array<int, 50> ary; ary.fill(0); for (int i = 0; i < ary.size(); i++) { ary[i] = i; } auto cnt = count_if(ary.begin(), ary.end(), [](int x){return x % 2 == 0;}); cout << cnt << endl; return 0; }
外部で関数オブジェクトを作らずにその場で作れるようになるのが便利。