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