• ベストアンサー

VC++の配列で

VC++の配列でソートをかけるのに一番簡単なやりかたは何でしょうか? a[]などの配列をstd::vectorなどに直してsortをかけてみたりしたのですが、 どうもよくわからなくて。 何処かわかりやすいHPなどがあれば よろしくお願い致しますm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

#include <algorithm> int a[N]; std::sort(a, a+N); 昇順ならばこれだけ。

gotyan
質問者

お礼

有り難うございます。 それだけで(^^;出来るんですね

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1の簡単な解説 sort(n, n + size); は、ソートアルゴリズムを使うということで sort(ランダムアクセスイテレータ 最初の要素,ランダムアクセスイテレータ 最後の要素); ですが、ランダムアクセスイテレータとして通常のポインタも使えます。 vectorで言えばv.begin(), v.end()を使うことになります。 sort(n, n + size, greater<int>()); は、整列する際に、比較する関数オブジェクトを引数として渡すものです。 扱っているのがint の配列だからそのままですが structやクラスを扱う場合は、 greaterの場合 bool operator>(const T& x, const T& y) のような定義をしてやる必要があります。

gotyan
質問者

お礼

有り難うございます。 No.1の方の書いて頂いたのと一緒に保存しておきます。 詳しい説明有り難うございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

#include <iostream> #include <algorithm> #include <functional> using namespace std; int main(void){ int n[]={ 10, 50, 34, 69, 48, 77, 99 }; int size = sizeof(n) / sizeof(int); sort(n, n + size);//昇順にソート for(int i=0;i<size;i++) cout << n[i] << " "; cout << endl; sort(n, n + size, greater<int>());//降順にソート for(int i=0;i<size;i++) cout << n[i] << " "; cout << endl; return 0; }

gotyan
質問者

お礼

有り難うございますやってみます。。

関連するQ&A