「std::for each」の版間の差分
提供: C++入門
(→コンパイル) |
(→ソースコード for_each2.cpp) |
||
(同じ利用者による、間の1版が非表示) | |||
行51: | 行51: | ||
== ラムダ式を用いたfor_each2.cpp の例 == | == ラムダ式を用いたfor_each2.cpp の例 == | ||
=== ソースコード for_each2.cpp === | === ソースコード for_each2.cpp === | ||
− | + | [[ラムダ式]]で書いた場合です。 | |
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
行72: | 行72: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | g++49 -std=c++11 for_each2.cpp -o for_each2 | |
</syntaxhighlight> | </syntaxhighlight> | ||
2014年8月27日 (水) 19:38時点における最新版
std::for_each とは、レンジの要素すべてに指定された関数を適用するアルゴリズムです。
読み方
- std::for_each
- えすてぃーでぃー ふぉー いーち
目次
概要
std::vectorなどのコンテナの要素に対して、オペレーションしたいときに、for文でグルグル回すことがあります。 for文で回してもよいですが、コーディングの量が多くなるため、あまり望ましくないこともあるでしょう。
コーディングを楽にするという意味では、別の方法や組み合わせがいくつも存在します。
for_each1.cpp の例
ソースコード for_each1.cpp
std::begin, std::endを使用しているので、新しいバージョンのコンパイラが必要です。
#include <iostream> #include <algorithm> using namespace std; void display(int i) { cout << i << endl; } int main(int argc, char const* argv[]) { int i_array[] = {1,2,3}; for_each(std::begin(i_array), std::end(i_array), display); return 0; }
コンパイル
g++49 -std=c++11 for_each1.cpp -o for_each1
実行例
% ./for_each1 1 2 3
ラムダ式を用いたfor_each2.cpp の例
ソースコード for_each2.cpp
ラムダ式で書いた場合です。
#include <iostream> #include <algorithm> using namespace std; int main(int argc, char const* argv[]) { int i_array[] = {1,2,3}; for_each(std::begin(i_array), std::end(i_array), [](int &i){ cout << i << endl; } ); return 0; }
コンパイル
g++49 -std=c++11 for_each2.cpp -o for_each2
実行例
% ./for_each2 1 2 3