- ベストアンサー
VC++の配列で
VC++の配列でソートをかけるのに一番簡単なやりかたは何でしょうか? a[]などの配列をstd::vectorなどに直してsortをかけてみたりしたのですが、 どうもよくわからなくて。 何処かわかりやすいHPなどがあれば よろしくお願い致しますm(__)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#include <algorithm> int a[N]; std::sort(a, a+N); 昇順ならばこれだけ。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#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) のような定義をしてやる必要があります。
お礼
有り難うございます。 No.1の方の書いて頂いたのと一緒に保存しておきます。 詳しい説明有り難うございます。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#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; }
お礼
有り難うございますやってみます。。
お礼
有り難うございます。 それだけで(^^;出来るんですね