C++ベクトルのsortメソッドの使い方

C++のvectorクラスには、ベクトル中の要素をソートするsort関数があります。sort関数の使い方は次のとおりです。

#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {5, 2, 8, 1, 9};

    // 对向量中的元素进行升序排序
    std::sort(vec.begin(), vec.end());

    // 输出排序后的结果
    for (int num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

結果は1 2 5 8 9となる

sort関数はヘッダファイルをインクルードする必要があります。関数は、ソートする範囲を指定する2つのイテレータを受けとります。ここでvec.begin()はベクトルの最初の要素へのポインタで、vec.end()はベクトルの最後の要素の次の位置へのポインタです。

sort 関数はデフォルトで昇順に要素を並べ替えます. 降順で並べ替える場合は, 第3引数に std::greater() 関数オブジェクトを指定できます.

std::sort(vec.begin(), vec.end(), std::greater<int>());

現在出力された結果は次の通りです: 9 8 5 2 1

基本的なデータ型のソートだけではなく、sort 関数はカスタムのオブジェクトもソートできます。そのためには、オブジェクトの < 演算子をオーバーライドするか、カスタム比較関数を使用します。たとえば、カスタムオブジェクトを格納した vector の並べ替え:

#include <vector>
#include <algorithm>

struct Person {
    std::string name;
    int age;
};

bool compareByAge(const Person& p1, const Person& p2) {
    return p1.age < p2.age;
}

int main() {
    std::vector<Person> people = { {"Alice", 25}, {"Bob", 20}, {"Charlie", 30} };

    // 对向量中的元素按照年龄进行排序
    std::sort(people.begin(), people.end(), compareByAge);

    // 输出排序后的结果
    for (const Person& person : people) {
        std::cout << person.name << ": " << person.age << std::endl;
    }

    return 0;
}

ネイティブの日本語で言い換えてください。オプションは1つだけで構いません。

Bob: 20
Alice: 25
Charlie: 30
bannerAds