C++11とか

主に競技プログラミングとかで使いそうなところを。

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;
}

std::vector<int>::iteratorって書かなくてもいいみたい。

配列とかー

#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;
}

外部で関数オブジェクトを作らずにその場で作れるようになるのが便利。