C で std::sort を使用して配列を並べ替える
この記事では、標準テンプレート ライブラリ (STL) 関数 std の使用方法について説明します。 :sort int v[2000] として宣言された配列をソートします。さらに、C が配列の開始インデックスと終了インデックスを取得するネイティブな方法を提供しているかどうかを調査します。
std::sort および Range-Based Sorting
std::sort では、C 11 で導入された範囲ベースの for ループを利用できます。このアプローチにより、並べ替えプロセスが簡素化されます。
<code class="cpp">int v[2000]; std::sort(std::begin(v), std::end(v));</code>
ここで、 std::begin と std::end は返されるユーティリティ関数です。コンテナまたは配列の最初の要素と最後の要素の 1 つ後の要素をそれぞれ指す反復子。
カスタムの begin 関数と end 関数
以前の C バージョンでは、次のように作成できます。独自の begin 関数と end 関数:
<code class="cpp">template<class Cont> typename Cont::iterator begin(Cont& c){ return c.begin(); } template<class Cont> typename Cont::iterator end(Cont& c){ return c.end(); } template<class T, std::size_t N> T* begin(T (&arr)[N]){ return &arr[0]; } template<class T, std::size_t N> T* end(T (&arr)[N]){ return arr + N; }</code>
これらの関数は、コンテナと配列の既存の begin 関数と end 関数をオーバーロードし、範囲境界にアクセスするための一貫したインターフェイスを提供します。
以上がネイティブ C 関数を使用して配列境界を取得できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。