「std::for each」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「std::for_each とは、レンジの要素すべてに指定された関数を適用するアルゴリズムです。 '''読み方''' ;std::for_each:えすて...」)
 
(コンパイル)
行37: 行37:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
clang++ -std=c++11  for_each1.cpp -o for_each1
+
g++49 -std=c++11  for_each1.cpp -o for_each1
 
</syntaxhighlight>
 
</syntaxhighlight>
  

2013年12月27日 (金) 22:48時点における版

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

コンパイル

clang++ -std=c++11  for_each2.cpp -o for_each2

実行例

% ./for_each2
1
2
3

関連項目