📅  最后修改于: 2023-12-03 14:53:01.376000             🧑  作者: Mango
向量是一种动态数组,它可以随时调整大小。在C++中,通过使用STL中的vector库来进行向量的操作。对于向量中的元素,我们可能需要对其进行排序。下面是如何对向量进行排序的介绍:
sort是C++中STL中的一个函数,可以对数组、向量等序列容器进行排序。我们可以使用sort函数对向量进行排序,使用方法如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {4, 2, 6, 1, 3, 5};
sort(v.begin(), v.end());
for(auto i : v){
cout << i << " ";
}
return 0;
}
上面的程序输出结果为:1 2 3 4 5 6
。
该程序使用了sort函数对向量进行排序,sort函数接受一个迭代器表示排序的范围,上述程序的sort(v.begin(), v.end())表示对v中的所有元素进行排序。
有时需要按照自定义规则对元素进行排序,STL中的sort函数提供了扩展功能,可以自定义排序规则。
2.1 函数指针
通过定义一个比较函数,我们可以在sort函数中指定这个函数来实现自定义排序规则。
下面是一个示例程序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b){
return a > b;
}
int main()
{
vector<int> v = {4, 2, 6, 1, 3, 5};
sort(v.begin(), v.end(), cmp);
for(auto i : v){
cout << i << " ";
}
return 0;
}
上述程序使用了一个自定义的比较函数cmp()来实现降序排列。由于sort函数默认升序排列,我们使用自定义比较函数来实现降序排列。运行结果为:6 5 4 3 2 1
。
2.2 lambda表达式
lambda表达式是C++11引入的一种新语法,它可以用来定义短小的函数。sort函数支持使用lambda表达式定义自定义排序规则。
下面是一个示例程序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {4, 2, 6, 1, 3, 5};
sort(v.begin(), v.end(), [](int a, int b) { return a > b; });
for(auto i : v){
cout << i << " ";
}
return 0;
}
上述程序使用了一个lambda表达式来实现降序排列。运行结果与上例相同:6 5 4 3 2 1
。
下面是一个简单的应用,使用sort和迭代器来实现对向量中字符串按长度从大到小的排序:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool cmp(string a, string b) {
return a.size() > b.size();
}
int main()
{
vector<string> v = {"hello", "world", "my", "name", "is", "AI"};
sort(v.begin(), v.end(), cmp);
for (auto i : v) {
cout << i << " ";
}
return 0;
}
上述程序输出结果为:world hello name AI my is
。
上面介绍了如何使用sort函数进行向量排序,并且给出了自定义排序规则的方法。通过这些方法,我们可以轻松地对向量进行排序。