ループのために範囲ベース - C ++ 11言語のいくつかの新機能

1.ループのために範囲ベース

{(コル赤緯)のための
 文
}

 

例えば:

以下のためにint型:{Iを23579131719 、{})
    はstd :: COUT << I << はstd :: ENDL。
}

 

std ::ベクトル< ダブル > VEC; 
... 
のための(自動&ELEM:VEC){ 
    ELEM * = 3 
}

ここで、基準としてELEMを宣言することは重要であるため、ベクトルの要素のローカルコピーにループ行為のための本体内のそうでなければ文(時には有用であるかもしれません)。

これは、コピーコンストラクタと各要素のデストラクタを呼び出すことを避けるために、あなたは通常、現在の要素が一定の基準であることを宣言しなければならないことを意味します。次のようにこのように、コレクションのすべての要素を印刷する一般的な機能を実装する必要があります。

テンプレート<型名T>
 ボイド printElements(CONST T&コル)
{ 
    ためCONSTオート&ELEM:コル){ 
        のstd :: COUT << ELEM << はstd :: ENDL。
    } 
}

範囲ベースのループ期間については、以下のコードと同等です:

以下のための(自動_pos = coll.begin();!_pos = coll.end(); ++ _pos){
     constのオート&elemは= * _pos。
    std :: coutの << elemは<< はstd ::てendl; 
}

 

int型の配列[] = { 12345 }。
長い合計= 0 ; // すべての要素のプロセス和
のためにINT X:アレイ){ 
    合計 + = X。
} 
のための(自動ELEM:{和、和* 2、*合計4 }){ // プリント15 30 60 
    のstd :: COUT << ELEM << はstd :: ENDL。
}

 

ます。https://www.cnblogs.com/davidgu/p/4607897.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34354173/article/details/93802989