C++ 的 vector 類提供了一個(gè) sort 函數(shù),用于對(duì)向量中的元素進(jìn)行排序。sort 函數(shù)的用法如下:
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 2, 8, 1, 9};
// 對(duì)向量中的元素進(jìn)行升序排序
std::sort(vec.begin(), vec.end());
// 輸出排序后的結(jié)果
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
輸出結(jié)果為:1 2 5 8 9。
sort 函數(shù)的使用需要包含 <algorithm>
頭文件。該函數(shù)接受兩個(gè)迭代器作為參數(shù),分別指定排序的范圍,其中 vec.begin()
指向向量的第一個(gè)元素,vec.end()
指向向量的最后一個(gè)元素的下一個(gè)位置。
默認(rèn)情況下,sort 函數(shù)會(huì)按照升序?qū)υ剡M(jìn)行排序。如果需要按照降序進(jìn)行排序,可以使用 std::greater<int>()
函數(shù)對(duì)象作為 sort 函數(shù)的第三個(gè)參數(shù),如下所示:
std::sort(vec.begin(), vec.end(), std::greater<int>());
此時(shí)輸出結(jié)果為:9 8 5 2 1。
除了基本數(shù)據(jù)類型的排序,sort 函數(shù)還可以對(duì)自定義對(duì)象進(jìn)行排序,只需要重載對(duì)象的 <
運(yùn)算符或者使用自定義的比較函數(shù)即可。例如,對(duì)一個(gè)存儲(chǔ)自定義對(duì)象的 vector 進(jìn)行排序:
#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} };
// 對(duì)向量中的元素按照年齡進(jìn)行排序
std::sort(people.begin(), people.end(), compareByAge);
// 輸出排序后的結(jié)果
for (const Person& person : people) {
std::cout << person.name << ": " << person.age << std::endl;
}
return 0;
}
輸出結(jié)果為:
Bob: 20
Alice: 25
Charlie: 30