C++(十二)— vector中pair的排序方法
时间: 2023-11-24 18:06:03 浏览: 48
对于一个存储pair的vector,我们可以使用sort函数来对其中的pair进行排序。sort函数的第三个参数可以传入自定义的比较函数,用于指定排序方式。
假设我们有一个存储pair的vector:
```
vector<pair<int, int>> vec;
```
我们可以通过以下方式来定义比较函数:
```
bool cmp(const pair<int, int>& a, const pair<int, int>& b) {
if (a.first != b.first) {
return a.first < b.first;
}
return a.second < b.second;
}
```
这个比较函数会先按照pair的第一个元素进行排序,如果第一个元素相同,则按照第二个元素进行排序。
然后我们可以在sort函数中传入这个比较函数进行排序:
```
sort(vec.begin(), vec.end(), cmp);
```
这样,我们就可以对存储pair的vector进行排序了。
相关问题
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++ pair排序
对于C++中的pair,可以使用标准库中的sort函数进行排序。sort函数需要传入一个范围的迭代器,并可以指定一个自定义的比较函数来确定排序的顺序。以下是一个示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool comparePairs(const pair<int, int>& p1, const 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 = {{5, 2}, {3, 1}, {4, 3}, {5, 1}, {4, 2}};
sort(pairs.begin(), pairs.end(), comparePairs);
for (const auto& pair : pairs) {
cout << "(" << pair.first << ", " << pair.second << ") ";
}
cout << endl;
return 0;
}
```
运行以上代码,输出会是 `(3, 1) (4, 3) (4, 2) (5, 2) (5, 1)`,即按照第一个元素进行升序排序,如果第一个元素相同,则按照第二个元素进行降序排序。
你也可以根据自己的需求修改comparePairs函数来实现不同的排序方式。