c++中的pair排序规则是什么
时间: 2024-06-14 08:04:36 浏览: 14
在C++中,对pair进行排序时,默认按照pair的第一个元素进行排序。如果第一个元素相同,则按照第二个元素进行排序。
以下是对pair进行排序的示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool compare(pair<int, int> p1, pair<int, int> p2) {
if (p1.first == p2.first) {
return p1.second < p2.second;
}
return p1.first < p2.first;
}
int main() {
vector<pair<int, int>> pairs = {{3, 2}, {1, 5}, {2, 4}, {3, 1}};
sort(pairs.begin(), pairs.end(), compare);
for (auto p : pairs) {
cout << p.first << " " << p.second << endl;
}
return 0;
}
```
输出结果为:
```
1 5
2 4
3 1
3 2
```
相关问题
c++ vector pair
c++中的vector可以存储任意类型的元素,包括pair类型的元素。在给vector排序时,可以自定义排序算法,比如按照pair元素的第二个元素的值进行排序。可以通过实现一个静态的比较函数来自定义排序算法,这个比较函数接受两个pair元素作为参数,根据需要的排序规则返回一个布尔值。在主函数中,可以使用std::sort函数对vector中的pair元素进行排序。为了使用pair类型,不需要添加任何额外的头文件。pair类型可以进行复制构造,即可以通过一个已有的pair对象来初始化另一个pair对象。可以通过p1.first和p1.second来访问pair对象的第一个和第二个元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
C++(十二)— vector中pair的排序方法
对于存储pair类型的vector,可以使用STL中的sort函数进行排序。sort函数的第三个参数可以传入一个比较函数,用于定义排序规则。以下是一个示例代码,演示如何对一个存储pair的vector按照第一个元素进行递增排序:
```C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const pair<int, int>& a, const pair<int, int>& b) {
return a.first < b.first;
}
int main() {
vector<pair<int, int>> v{{2, 3}, {1, 4}, {5, 2}, {3, 1}};
sort(v.begin(), v.end(), cmp);
for (auto& p : v) {
cout << p.first << "," << p.second << endl;
}
return 0;
}
```
输出结果为:
```
1,4
2,3
3,1
5,2
```
在比较函数中,我们定义了按照pair的第一个元素进行比较,如果第一个元素相等,则按照第二个元素进行比较。根据需要可以定义不同的比较函数来实现按照不同的规则进行排序。