「for」の版間の差分

提供: C++入門
移動: 案内検索
(概要)
 
(同じ利用者による、間の4版が非表示)
行1: 行1:
[[for]] (for文)とは、繰り返して処理をするときに用いらられます。制御文の繰り返し文の1つです。
+
[[for]] (for文)とは、繰り返して処理をするときに用いられます。制御文の繰り返し文の1つです。[[C++11]]で導入されたRange-based for loop(レンジベースfor文,範囲ベースfor文)を利用すると、繰り返しが非常にシンプルに書けます。さらに推論型 [[auto]] を併用することでよりコードが簡素になります。Iterator(イテレータ)が不要になり、コーディング量が圧倒的に少なくなります。
  
 
'''読み方'''
 
'''読み方'''
 
;[[for]]: ふぉー
 
;[[for]]: ふぉー
 
;for文: ふぉー ぶん
 
;for文: ふぉー ぶん
 +
;Range-based for:れんじ べーすど ふぉー
 
__TOC__
 
__TOC__
  
 
== 概要 ==
 
== 概要 ==
 
 
[[C++]] では、繰り返し処理を行うときに、以下の制御文やテンプレートなどを使用します。
 
[[C++]] では、繰り返し処理を行うときに、以下の制御文やテンプレートなどを使用します。
 
* [[for]]
 
* [[for]]
 
** [[C言語]]と同様の[[for]]
 
** [[C言語]]と同様の[[for]]
** [[C++11]]で拡張された[[for]]
+
** [[C++11]]で拡張された[[for]] (Range-based for)
 
* [[std::for_each]]
 
* [[std::for_each]]
 
* [[BOOST_FOREACH]]
 
* [[BOOST_FOREACH]]
行17: 行17:
  
 
[[C++11]]で拡張された機能を利用する場合は、[[clang++]] (3.3)や新しい [[g++]] (gcc48)が必要です。
 
[[C++11]]で拡張された機能を利用する場合は、[[clang++]] (3.3)や新しい [[g++]] (gcc48)が必要です。
 
 
== 単純なfor文の例 ==
 
== 単純なfor文の例 ==
 
 
=== ソースコード for.cpp ===
 
=== ソースコード for.cpp ===
 
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 
#include <iostream>
 
#include <iostream>
行36: 行33:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== コンパイル ===
 
=== コンパイル ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
g++  for.cpp -o for
 
g++  for.cpp -o for
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== 実行例 ===
 
=== 実行例 ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行50: 行44:
 
3
 
3
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== forを使用してリストを簡単に列挙する例 ==
 
== forを使用してリストを簡単に列挙する例 ==
[[C++11]][[for]]文を使用して、簡単にリストの要素にアクセスできるようになりました。
+
[[C++11]]で導入されたRange-based [[for]]文を使用して、簡単にリストの要素にアクセスできるようになりました。
 
=== ソースコード vector_for_int.cpp ===
 
=== ソースコード vector_for_int.cpp ===
 
このプログラムは、[[std::vector]] の内容を表示するだけの例です。
 
このプログラムは、[[std::vector]] の内容を表示するだけの例です。
行73: 行66:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== コンパイル ===
 
=== コンパイル ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
clang++ -std=c++11  vector_for_int.cpp -o vector_for_int
 
clang++ -std=c++11  vector_for_int.cpp -o vector_for_int
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== 実行例 ===
 
=== 実行例 ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行89: 行80:
 
== autoを用いたループの例 ==
 
== autoを用いたループの例 ==
 
[[auto]] は、[[C++11]] で追加されました。
 
[[auto]] は、[[C++11]] で追加されました。
 
 
=== ソースコード auto1.cpp ===
 
=== ソースコード auto1.cpp ===
 
このプログラムは、[[std::vector]] の内容を表示するだけの例です。
 
このプログラムは、[[std::vector]] の内容を表示するだけの例です。
行110: 行100:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== コンパイル ===
 
=== コンパイル ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
clang++ -std=c++11  auto1.cpp -o auto1
 
clang++ -std=c++11  auto1.cpp -o auto1
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== 実行例 ===
 
=== 実行例 ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行123: 行111:
 
3
 
3
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[C++言語解説]]
 
* [[C++言語解説]]
 
* [[C++11]]
 
* [[C++11]]
 
* [[auto]]
 
* [[auto]]
<!--
+
* [[std::for_each]]
vim: filetype=mediawiki
+
* [[BOOST_FOREACH]]
 +
* [[ラムダ式]]
 +
<!-- vim: filetype=mediawiki
 
-->
 
-->

2015年8月19日 (水) 21:52時点における最新版

for (for文)とは、繰り返して処理をするときに用いられます。制御文の繰り返し文の1つです。C++11で導入されたRange-based for loop(レンジベースfor文,範囲ベースfor文)を利用すると、繰り返しが非常にシンプルに書けます。さらに推論型 auto を併用することでよりコードが簡素になります。Iterator(イテレータ)が不要になり、コーディング量が圧倒的に少なくなります。

読み方

for
ふぉー
for文
ふぉー ぶん
Range-based for
れんじ べーすど ふぉー

概要

C++ では、繰り返し処理を行うときに、以下の制御文やテンプレートなどを使用します。

C++11で拡張された機能を利用する場合は、clang++ (3.3)や新しい g++ (gcc48)が必要です。

単純なfor文の例

ソースコード for.cpp

#include <iostream>
using namespace std;
 
int
main(int argc, char const* argv[])
{
        int a[] = {1,2,3};
        for (unsigned int i = 0; i < (sizeof(a)/sizeof(int)) ; i++) {
                cout << a[i] << endl;
        }
        return 0;
}

コンパイル

g++  for.cpp -o for

実行例

% ./for
1
2
3

forを使用してリストを簡単に列挙する例

C++11で導入されたRange-based for文を使用して、簡単にリストの要素にアクセスできるようになりました。

ソースコード vector_for_int.cpp

このプログラムは、std::vector の内容を表示するだけの例です。

#include <iostream>
#include <vector>
using namespace std;
 
int
main(int argc, char const* argv[])
{
        std::vector<int> v;
        v.push_back (1);
        v.push_back (2);
        v.push_back (3);
        for (int& x: v) {
                cout << x << endl;
        }
        return 0;
}

コンパイル

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

実行例

% ./vector_for_int
1
2
3

autoを用いたループの例

auto は、C++11 で追加されました。

ソースコード auto1.cpp

このプログラムは、std::vector の内容を表示するだけの例です。

#include <iostream>
#include <vector>
using namespace std;
 
int
main(int argc, char const* argv[])
{
        std::vector<int> v;
        v.push_back (1);
        v.push_back (2);
        v.push_back (3);
        for (auto x: v) {
                cout << x << endl;
        }
        return 0;
}

コンパイル

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

実行例

% ./auto1
1
2
3

関連項目