首页 > 编程语言 >c++知识点多关键字排序

c++知识点多关键字排序

时间:2024-10-11 20:20:51浏览次数:17  
标签:std 知识点 关键字 int items c++ Item 排序

在C++中,可以使用std::sort函数结合自定义的比较函数对多关键字进行排序。以下是一个示例代码,演示如何根据两个关键字对结构体进行排序:

#include <iostream>

#include <vector>

#include <algorithm>

struct Item {

int firstKey;

int secondKey;

std::string name;

};

// 自定义比较函数,先按第一关键字升序排列,若相等则按第二关键字降序排列

bool compareKeys(const Item& a, const Item& b) {

return std::tie(a.firstKey, a.secondKey) < std::tie(b.firstKey, b.secondKey);

}

int main() {

std::vector<Item> items = {

{1, 3, "Item1"},

{1, 2, "Item2"},

{2, 1, "Item3"},

{2, 2, "Item4"}

};

std::sort(items.begin(), items.end(), compareKeys);

// 打印排序结果

for (const auto& item : items) {

std::cout << item.name << ": " << item.firstKey << ", " << item.secondKey << std::endl;

}

return 0;

}

这段代码定义了一个Item结构体,并实现了一个compareKeys函数,用于比较两个Item对象的两个关键字。std::sort使用这个比较函数对items进行排序。最终,程序会按照第一关键字升序,第一关键字相同的情况下按第二关键字降序输出排序结果。

标签:std,知识点,关键字,int,items,c++,Item,排序
From: https://blog.csdn.net/LHLumbrella/article/details/142862588

相关文章

  • C++(继承)
    1.继承1.1基础使用继承就是在一个已经存在的类的基础上新建立一个类,新创建的类拥有之前类的特性。继承是面向对象的三大特性之一,体现了代码复用的思想。已经存在的类被称为“基类BaseClass”或“父类”新创建的类被称为“派生类”或“子类SubClass”下面是一个最简......
  • 【C++】二叉搜索树+变身 = 红黑树
    ......
  • 一文搞懂redis的所有知识点
    简介:整理自黑马程序员苍穹外卖项目p50-p62Redis简介Redis的下载与安装Redis安装包的目录结构redis.window.conf配置文件修改密码:Redis服务的启动也可直接双击redis-server.exe文件启动Redis客户端连接服务端Redis图形化界面三款图形化界面工具下载地址1、A......
  • ROS1,用C++实现获取激光雷达数据,并使用gazebo测试
    实现步骤构建一个新的软件包,包名叫做lidar_pkg。cdcatkin_ws/src/catkin_create_pkglidar_pkgroscpprospysensor_msgs输入code,打开vscode在软件包中新建一个节点,节点名叫做lidar_node。在节点中,向ROS大管家NodeHandle申请订阅话题/scan,并设置回调函数为......
  • C++ 读写锁 shared_mutex
    C++17新增了std::shared_mutex,通过shared_mutex可以实现读写锁的功能, 参考网址:https://zh.cppreference.com/w/cpp/thread/shared_mutexshared_mutex可以同时支持多个线程对共享资源同时读,但是只支持一个线程对同一共享资源进行写操作。shared_mutex支持共享锁和独......
  • C++删除字符串中的所有空格与换行(任意字符)
    删除字符串中的所有空格与换行使用头文件中的remove函数,注意:std::remove不会改变容器的大小,它只是将元素移动到容器的末尾。因此,我们需要调用erase来实际从字符串中删除这些元素。使用std::remove算法,它重排元素,使得要删除的元素(在这里是空格和换行符)被放在序列的末尾,......