下面就让我来详细讲解一下使用sort对C++容器进行排序的完整攻略。
1. sort函数简介
sort函数是C++ STL中的一个通用排序函数,其定义在algorithm头文件中。sort函数可以用于排序各种容器类型,如vector、list、array、deque等。
sort函数的简单用法是:sort(begin, end)。其中,begin是容器的起始位置迭代器,end是容器的末尾位置迭代器。sort函数会根据容器中元素的大小关系对元素进行排序。
2. 使用sort函数对vector容器排序
下面是一个示例代码,展示了如何使用sort函数对vector容器进行排序。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec = { 5, 4, 3, 2, 1 };
sort(vec.begin(), vec.end()); // 对vector容器中的元素排序
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
在上述代码中,我们首先定义了一个vector容器vec,并初始化为{5, 4, 3, 2, 1}。然后,使用sort函数对容器中的元素进行排序。最后,使用循环输出排序后的结果。
运行上述代码,输出结果为:1 2 3 4 5
,可以看到vector容器中的元素已经按照从小到大的顺序排列好了。
3. 使用sort函数对自定义类型容器排序
如果要对自定义类型的容器进行排序,需要重载比较运算符。下面是一个示例代码,展示了如何使用sort函数对自定义类型Person的vector容器进行排序。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Person
{
public:
Person(int age, string name) : m_age(age), m_name(name) {} // 构造函数
int getAge() const { return m_age; } // 获取年龄
string getName() const { return m_name; } // 获取姓名
bool operator < (const Person& p) const // 重载小于号运算符
{
return m_age < p.m_age; // 按照年龄排序
}
private:
int m_age; // 年龄
string m_name; // 姓名
};
int main()
{
vector<Person> vec = { Person(18, "Tom"), Person(20, "Jerry"), Person(19, "Mickey") };
sort(vec.begin(), vec.end()); // 对Person类型的vector容器排序
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i].getAge() << " " << vec[i].getName() << endl;
}
return 0;
}
在上述代码中,我们定义了一个Person类,其中包含两个成员变量m_age和m_name,及一个小于号运算符的重载。在main函数中,我们首先定义了一个vector容器vec,并初始化为三个Person类型的元素。然后,使用sort函数对容器中的元素进行排序,由于我们在Person类中重载了小于号运算符,sort函数能够通过这个运算符对元素进行排序。最后,使用循环输出排序后的结果。
运行上述代码,输出结果为:
18 Tom
19 Mickey
20 Jerry
可以看到Person类型的vector容器中的元素已经按照年龄从小到大的顺序排列好了。
以上就是使用sort函数对容器进行排序的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++使用sort对容器排序的实现 - Python技术站