📅  最后修改于: 2023-12-03 15:22:04.862000             🧑  作者: Mango
在C++中,我们可以使用标准库中的sort函数来对向量进行排序。sort函数可以排序包括数组、向量、链表在内的STL容器中的元素。
要对向量进行降序排序,我们需要自定义排序规则。比如,如果我们要对整型向量进行排序,可以定义一个lambda函数:
std::vector<int> v{1, 3, 2, 5, 4};
std::sort(v.begin(), v.end(), [](int i, int j){ return i > j; }); // 降序排序
这里的lambda函数就是排序规则,它接受两个整型参数i和j,返回一个bool值表示i是否应该排在j前面。
lambda函数的表达式[](int i, int j){ return i > j; }
表示对两个整数进行比较,如果i比j大,则i应该排在j前面,即降序排序。
如果我们要对一个结构体向量进行排序,可以自定义一个比较函数:
struct Person {
std::string name;
int age;
};
bool sortByAge(const Person &a, const Person &b) {
return a.age > b.age; // 降序排序
}
std::vector<Person> v{
{"Alice", 20},
{"Bob", 30},
{"Charlie", 25}
};
std::sort(v.begin(), v.end(), sortByAge); // 降序排序
在这个例子中,我们定义了一个Person结构体,其中包含一个名字和一个年龄。我们定义了一个sortByAge函数,它接受两个Person类型的参数a和b,返回一个bool值,表示a是否应该排在b前面。sortByAge函数按照年龄来比较,返回true表示a的年龄比b的年龄大,应该排在前面,即降序排序。
最后,我们调用sort函数对向量进行降序排序。
以上就是在C++中对向量进行降序排序的方法。如果你要对其它STL容器进行排序,也可以使用类似的方法。