C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での範囲ベースのforループ


forループに基づく範囲は、C ++ 11標準で追加されており、従来の同等のものをよりコンパクトにしたものです。範囲ベースのforループは、コンテナーの要素を最初から最後まで反復するために使用されます。範囲ベースのforループの構文は次のとおりです-

構文

for( range-declaration : range-expression ) loop statement

範囲宣言 −範囲式の要素の型と同じ型の変数の宣言です。多くの場合、autoキーワードは、範囲式の要素のタイプを自動的に識別するために使用されます。

範囲式 −要素のシーケンスを表すために使用される任意の式。中括弧内の要素のシーケンスも使用できます。

ループステートメント −範囲式の最後まで繰り返し実行される1つ以上のステートメントを含むforループの本体。

従来のforループとの比較 −

// Iterating over array
int arr[] = { 10,20,30,40,50 };
for (int num : arr)
printf("%d, ",num);
Is same as:
for ( int i=0;i<5;i++ )
printf("%d, ",arr[i]);

ここでは、rangebasedforループで配列のサイズを計算する必要がないため、条件式が不要であることが簡単にわかります。また、インクリメントまたはデクリメント操作の要件はありません。上記の各反復のforループに基づく範囲内の数値は、配列arr[]の要素の値を最初から最後まで取得します。ジャンプステートメントの1つが実行されるまで、要素はスキップされません。

休憩 −残りのすべての反復のループを終了します。

続行 −現在の反復をスキップして、次の反復に移動します

goto −ループからジャンプしてステートメントに移動し、その後にラベルが続きます-

範囲ベースの利点

  • 使いやすくシンプルな構文。

  • コンテナ内の要素の数や範囲式のサイズを計算する必要はありません。

  • 範囲宣言のデータ型が不明な場合は、代わりに自動指定子を使用できます。これにより、範囲式の型と自動的に互換性があります。

  • 条件ステートメントやインクリメント/デクリメントステートメントは必要ありません。

  • コンテナ全体を一度に繰り返す場合に最適です。

範囲ベースのデメリット

  • begin()とend()の間のすべての要素を繰り返します。特定のインデックスを処理することはできません。

  • 範囲ベースのforループを使用して、1つ以上の要素を再検討し、要素のグループをスキップすることはできません。

  • 配列を逆の順序で繰り返すことはできません。そのために ライブラリが使用されます

#include <iostream>
#include <vector>
#include <map>
int main(){
   int arr[] = { 10,20,30,40,50 };
   // traditional for
   for ( int i=0;i<5;i++ )
      printf("%d, ",arr[i]);
      printf("\n");
   for (int num : arr)
      printf("%d, ",num);
      printf("\n");
   // for character array
      char str[] = "Hello World";
   for (char c : str)
      printf("%c ",c);
      printf("\n");
   for (char c : "Hello World")
      printf("%c ",c);
      printf("\n");
      std::map <int, char> MAP({{1, 'A'}, {2, 'B'}, {3, 'C'}});
   for (auto m : MAP)
      printf("{ %d, %c }", m.first,m.second);
}

出力

10, 20, 30, 40, 50,
10, 20, 30, 40, 50,
H e l l o W o r l d
H e l l o W o r l d
{ 1, A }{ 2, B }{ 3, C }

  1. C++でのピラミッドのボリュームのプログラム

    ピラミッドのベースのタイプに応じて側面が与えられると、タスクはピラミッドの体積を計算することです。 ピラミッドは、ピラミッドの鋭いエッジを形成する共通点で外面が三角形で交わる3D図形です。ピラミッドの体積は、持つベースのタイプによって異なります。 -のように、ピラミッドを構成できるベースにはさまざまな種類があります。 三角形 -ピラミッドの体積よりも、ピラミッドの底辺が三角形になることを意味します 式-:( 1/6)* a * b * h 正方形 -ピラミッドの体積よりも、ピラミッドの底面が正方形になることを意味します 式-:(1/3)*(b ^ 2)* h 五角形 -ピラミッド

  2. QuickSort用のC++プログラム?

    クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま