📜  如何对向量进行排序 - C++ (1)

📅  最后修改于: 2023-12-03 14:53:01.376000             🧑  作者: Mango

如何对向量进行排序 - C++

向量是一种动态数组,它可以随时调整大小。在C++中,通过使用STL中的vector库来进行向量的操作。对于向量中的元素,我们可能需要对其进行排序。下面是如何对向量进行排序的介绍:

1. 使用sort函数

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中的所有元素进行排序。

2. 自定义排序规则

有时需要按照自定义规则对元素进行排序,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

3. 案例

下面是一个简单的应用,使用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函数进行向量排序,并且给出了自定义排序规则的方法。通过这些方法,我们可以轻松地对向量进行排序。