C++

template引数にコンテナを指定し、関数内でiterateする方法

C++

自分が修士の学生でC++を書いていたとき、どうにも分からなかったことがある。それは、template関数のtemplate引数にstd::vectorなどのコンテナを指定し、関数内でそのコンテナに対してiteratorを回す方法である。当時の自分は以下のようなコードを書いてお…

Range based forとauto&&によるperfect forwarding

C++

C++11からrange based forという構文が導入された。これはpythonなどで言うところのforeach文と似たような動作をする構文である。以下に典型的な使用例を示す。 std::vector<int> vec(10); /* vecに何か値を設定 */ for(int el : vec) { /* Do something using "e</int>…

C++11におけるstd::vectorへの最速な値設定方法の考察を通して学ぶemplace_backとstd::move

C++

最近C++を書く機会が多いのだが、いかんせん自分の知識は2014年でぱったりと止まっている。しかも2014年当時、自分はまだまだ未熟で、C++11やらC++14なんかの機能についてはまったくの無知であった。そんなわけで、C++のモダンな機能を学びがてら、タイトル…