プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

#include <algorithm>



int a[N];
std::sort(a, a+N);

昇順ならばこれだけ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/24 07:44

#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)
のような定義をしてやる必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/24 07:40

#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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/24 07:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!