二维vector的sort自定义排序
时间: 2023-10-15 15:27:41 浏览: 180
要对二维vector进行自定义排序,可以使用`sort`函数并结合自定义的比较函数来实现。下面是一个示例代码,演示如何对二维vector按照第一列元素进行升序排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 自定义比较函数
bool compare(const std::vector<int>& a, const std::vector<int>& b) {
return a[0] < b[0];
}
int main() {
std::vector<std::vector<int>> vec = {{3, 2}, {1, 4}, {2, 3}, {1, 2}};
// 使用自定义比较函数进行排序
std::sort(vec.begin(), vec.end(), compare);
// 输出排序后的结果
for (const auto& v : vec) {
std::cout << v[0] << " " << v[1] << std::endl;
}
return 0;
}
```
输出结果为:
```
1 4
1 2
2 3
3 2
```
在上述代码中,自定义的比较函数`compare`按照二维vector的第一列元素进行升序排序。然后通过`std::sort`函数将二维vector排序,最后打印排序后的结果。你可以根据自己的需求修改比较函数实现其他类型的自定义排序。
相关问题
vector 自定义排序
在C++中,我们可以使用lambda表达式来实现自定义排序。首先,我们需要定义一个vector对象并填充它的元素。然后,使用sort函数对vector进行排序。在sort函数的第三个参数中,我们可以使用lambda表达式来指定排序的方式。在lambda表达式中,我们可以自定义比较函数来决定元素的顺序。比如,如果我们想要按照元素的第二个值进行降序排序,我们可以使用以下代码:
```cpp
vector<vector<int>> vec(5, vector<int>(5)); // 定义一个5x5的二维vector
sort(vec.begin(), vec.end(), [](const vector<int>& a, const vector<int>& b){
return a > b<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [vector排序|vector多维数组排序|vector自定义排序|不改变相同元素相对顺序比较](https://blog.csdn.net/qq_39898780/article/details/121349269)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [【C++】vector数组排序](https://blog.csdn.net/weixin_46308081/article/details/117195502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
二维vector排序cmp
### C++ 二维 `vector` 的自定义排序
对于 C++ 中的二维 `vector`,可以利用标准库中的 `sort()` 函数并配合自定义比较函数来实现特定顺序下的排序。下面是一个具体的实例说明如何创建和应用这样的比较函数。
当需要按照多级条件对数据进行排列时——比如先依据某个维度升序或降序处理,在该维度相同的情况下再考虑另一些因素决定先后次序,则可以通过编写静态成员函数或者全局函数作为参数传递给 `std::sort` 来达成目的[^2]。
```cpp
#include <iostream>
#include <algorithm> // std::sort
#include <vector>
// 自定义比较函数用于两维向量之间的对比
static bool customCompare(const std::vector<int>& vec1, const std::vector<int>& vec2){
if (vec1[0] == vec2[0])
return vec1[1] > vec2[1]; // 如果第一个元素相等则按第二个元素降序排列
else
return vec1[0] < vec2[0]; // 否则按第一个元素升序排列
}
int main(){
std::vector<std::vector<int>> clips = {{0,2},{1,9},{1,5},{4,6},{5,9},{8,10}};
// 使用自定义比较器进行排序
std::sort(clips.begin(), clips.end(), customCompare);
// 输出排序后的结果
for(size_t i=0; i<clips.size(); ++i){
std::cout << '[' << clips[i][0]<< ','<<clips[i][1]<< ']' << ',';
}
}
```
上述代码片段展示了如何定义一个名为 `customCompare` 的布尔返回类型的函数,它接受两个整数型的一维 `vector` 参数,并基于指定规则对其进行比较;随后调用了 `std::sort` 方法传入此比较器完成最终的数据整理工作。
此外,如果涉及到更复杂的结构体类型而非简单的数值组合成的二维 `vector`,同样可以在类似的思路下调整比较逻辑以适应具体需求[^4]。
阅读全文
相关推荐
















