次の方法で共有


アルゴリズム (Modern C++)

最新の C++ プログラミングのアルゴリズムを使用することおを標準テンプレート ライブラリ (STL)。いくつかの重要な例は次のとおりです。

  • for_each、既定の探索アルゴリズムです。(もtransform not ・ イン ・ プレース」での意味をします)。

  • find_if、検索のデフォルトのアルゴリズムです。

  • sort、 lower_bound、および並べ替え、アルゴリズムの検索、その他の既定します。

厳密な比較演算子を記述するには、使用<とを使用してラムダの名前場合ことができます。

auto comp = []( const widget& w1, const widget& w2 )
      { return w1.weight() < w2.weight(); }

sort( v.begin(), v.end(), comp );

auto i = lower_bound( v.begin(), v.end(), comp );

ループ

可能な場合は、範囲ベースを使用してforループ アルゴリズムの呼び出し、またはその両方を手動で記述されたループの代わりにします。copy、 transform、 count_if、 remove_if、および他の人と同様に、意図が明白で、簡単にバグを解放するコードを記述することは手書きのループよりもはるかに優れています。また、STL アルゴリズムの多くより効率的に実装の最適化があります。

このような古い C++ の代わりに。

for( auto i = strings.begin(); i != strings.end(); ++i ) {
  :::
  :::
}

auto i = v.begin();

for( ; i != v.end(); ++i ) {
  if (*i > x && *i < y) break;
}

このような現代の C++ を使用します。

for_each( begin(strings), end(strings), []( string& s ) {
  :::
  :::
} );
auto i = find_if( begin(v), end(v),  [=](int i) { return i > x && i < y; }  );

Hh438471.collapse_all(ja-jp,VS.110).gif範囲ベースのループ

範囲ベースforループでは、C + + 11 言語機能、STL アルゴリズムではありません。しかし、ここでループについての言及に値する。範囲ベースforループは、拡張機能のforキーワードと値の範囲を反復処理するループを記述するのには、便利で効率的な方法を提供します。STL コンテナー、文字列、および配列は既製の範囲ベースforループします。この新しいイテレーション構文をユーザー定義の種類を有効にするには、次のサポートを追加します。

  • A begin構造体の先頭に、反復子を取得する方法と、 endメソッドは、構造体の末尾に、反復子を返します。

  • これらのメソッドは、反復子のサポート: operator*、 operator!=、およびoperator++ (前置バージョン)。

これらのメソッドには、メンバーまたはスタンドアロン関数のいずれかをすることができます。

参照

その他の技術情報

C++ へようこそ (Modern C++)

C++ 言語リファレンス

C++ の標準ライブラリの参照