C++(十二)— vector中pair的排序方法
时间: 2023-11-24 22:06:02 浏览: 87
对于存储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的第一个元素进行比较,如果第一个元素相等,则按照第二个元素进行比较。根据需要可以定义不同的比较函数来实现按照不同的规则进行排序。
相关问题
c++ 对pair类型的vector按pair。first排序
在C++中,如果你想按照`std::pair`的`.first`元素对其进行排序,可以使用`std::sort`函数配合自定义的比较函数。首先,你需要创建一个`std::vector<std::pair<type, type>>`,然后定义一个比较函数模板,比如`bool comparePairs(const std::pair<type, type>& a, const std::pair<type, type>& b)`,这个函数应该返回`true`如果`a.first`小于`b.first`。
下面是一个例子,假设我们有一个包含`(int, string)`类型的向量,我们想按第一个整数排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
bool compareIntStrings(const std::pair<int, std::string>& a, const std::pair<int, std::string>& b) {
return a.first < b.first;
}
int main() {
std::vector<std::pair<int, std::string>> vec = {{4, "d"}, {1, "a"}, {3, "c"}};
// 排序vector
std::sort(vec.begin(), vec.end(), compareIntStrings);
// 打印结果
for (const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << "\n";
}
return 0;
}
```
在这个例子中,`compareIntStrings`函数用于告诉`std::sort`如何根据`.first`字段进行升序排列。
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>
阅读全文