std::for each

提供: C++入門
2014年8月27日 (水) 19:38時点におけるDaemon (トーク | 投稿記録)による版 (ソースコード for_each2.cpp)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

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

関連項目




スポンサーリンク