利用STL的set容器进行升序排序和降序排序--源码

【C++】set的使用。(样例:学生成绩排序) 前段时间使用了set,了解到了set具有排序功能,然后碰巧我那作业得使用排序来减少算法复杂度,就随手做个样例试用下set。 结果这个样例写着写着就上头(写了几小时)。个人觉得自己写的样例完成度还算挺高,拿来水一下。 插入数据后再修改多级排序的话是不会对已插入的数据进行排序的,这请注意一下。如果多级排序发生改变的话就只能再重新生成一次set,如果排序频繁变动的话就建议别使用这个方式进行排序了,反复生成set要的开销也不小。 【代码运行结果(按总分→语文→英语→数学的顺序排序)】 这里为了规范,就设置 阅读详情

利用STL的set容器进行升序排序和降序排序--源码--VS2019下运行测试成功:

#include <iostream>
#include <set>
using namespace std;

struct myfunc 
{
    bool operator()(int v1,int v2) const
    {
        return v1 > v2;
    }
};

int main()
{
    //set升序排列
    set<int> Tmp;
    //初始化
    Tmp.insert(8);
    Tmp.insert(10);
    Tmp.insert(100);
    Tmp.insert(9);
    Tmp.insert(20);
    Tmp.insert(3);

    for (set<int>::iterator it = Tmp.begin(); it != Tmp.end(); ++it)
    {
        cout << "升序排列:" << *it << endl;
    }


    //set降序排列
    set<int, myfunc> setTmp;
    //初始化
    setTmp.insert(8);
    setTmp.insert(10);
    setTmp.insert(100);
    setTmp.insert(9);
    setTmp.insert(20);
    setTmp.insert(3);

    for (set<int,myfunc>::iterator it = setTmp.begin();  it != setTmp.end(); ++it)
    {
        cout << "降序排列:" << *it << endl;
    }

}

修改STL的排序准则 STL中的set和map都是自动排序的,但是如何修改其排序准则呢?本文档给出了修改思路和具体的实现代码。对于STL编程爱好者而言,实在是不可多得的好资料啊。 立即下载

相关推荐

NLP-Beginner 任务一:基于机器学习的文本分类(超详细!!)

NLP-Beginner 任务一:基于机器学习的文本分类传送门一. 介绍1.1 任务简介1.2 数据集1.3 流程介绍二. 特征提取2.1 词袋特征(Bag-of-word)2.2 N元特征 (N-gram)三. 最优化求解3.1 Softmax回归介绍3.2 损失函数3.3 梯度下降3.4 学习率四. 代码及实现4.1 实验设置4.2 结果展示4.3 代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、

0oTedo0 9931

set 的详细用法(set 排序、set 的遍历、set 的多种倒序遍历方法、set 的基本成员函数)

set 的详细用(set 排序、set 的遍历、set 的多种倒序遍历方法、set 的基本成员函数)

wcj_______的博客 1万+

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 413

c++学习之set降序

set默认为升序排列,现在指定他为升序排列 代码示例 #include <iostream> #include <queue> #include <algorithm> #include <string> #include <set> using namespace std; class myCompare { public: bool operator()(int v1,int v2) { return v1 &

weixin_42097108的博客 1384

保姆级教程:用Python+Mediapipe实时捕捉手势,驱动Unity虚拟手模型(附完整源码)

本文详细介绍了如何利用Python的Mediapipe库和Unity实现实时手势识别与虚拟手模型驱动。通过OpenCV进行图像采集,Mediapipe提供21个手部关键点识别,结合UDP通信协议实现Python与Unity之间的低延迟数据传输。教程包含完整源码、环境配置、核心代码实现及性能优化技巧,适用于VR教育、游戏开发等需要自然交互的场景。

weixin_42531779的博客 361

使用3sigma原则去除数据表中的极端值

本文使用3sigma解决数据表中出现的极端值问题,其中包括基本原理、使用原则(检验方法)、代码展示这3个部分

qq_51397866的博客 4377

【C++ STL容器set 】std::set 的全方位解析

在深入探索 C++ 的set容器之前,让我们先建立一个坚实的基础,理解其基本概念和构成。set是一种关联容器,以其独特的方式,维护了元素的唯一性和有序性,为编程提供了强大而灵活的工具。set容器是标准模板库(Standard Template Library, STL)的一部分,设计用来存储唯一的元素,这些元素按照特定顺序排列。

木牛的博客 5876

Windows下TensorRT+YOLOv11部署避坑指南:从CUDA配置到模型加密全流程

本文详细解析了在Windows平台部署YOLOv11与TensorRT的全流程,重点涵盖从CUDA环境配置、工程编译适配到模型加密保护的实战指南。基于wang-xinyu的tensorrtx仓库,提供了详细的版本选择、编译问题修复方案,并深入探讨了如何对TensorRT引擎进行加密,以实现高效且安全的端到端部署。

vscode5coder的博客 450

C++中set按降序排序

set一般插入元素时,默认使用关键字类型的<运算符来比较两个关键字,故一般插入后为升序,举个例子: int main(int argc, char* argv[]) { set<int> s; s.insert(2); s.insert(1); s.insert(3); set<int>::iterator it = s.begin(); for (; it != s.end(); ++it){ cout << *it; } return.

Mr.horse的博客 6345

xhs私信协议分析

之前分析过xhs的shield算法,今天再聊聊xhs的私信,文章仅供学习参考研究交流,如有侵权请联系删帖。经过抓包分析发现私信接口并不是走的http协议,而是socket协议。而要获取socket包则需要使用wireshark软件1、protobuf的包体中的序号7,多次验证后发现文字信息的需要需要固定成12、protobuf的包体中的序号12,多次验证后发现文字信息的需要需要固定成1后续有时间的话,再研究一下视频和图片格式的私信协议,这次就分析到这里吧。

佛系更新... 3485

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2662

C++ STL源码剖析 11-set multiset

如果你想自定义元素的排序方式,可以在声明std::set或时提供一个比较函数。示例代码// 自定义比较函数// 降序排列// 插入元素// 遍历set// 输出: 20 10 5return 0;通过使用std::set和,你可以有效地管理有序的元素集合,无论是唯一还是重复的元素。

wesigj的博客 2472

YOLOv13涨点改进 | 全网独家创新、HyperACE改进、注意力改进篇 | CVPR 2025| 引入LRSA局部区域自注意力模块,能提升其在细节捕捉、小目标检测和长距离依赖建模方面的能力

本文提出将LRSA(局部区域自注意力)模块集成到YOLOv13中,通过局部特征交互增强细节捕捉能力、小物体检测精度和长距离依赖建模。LRSA模块采用重叠图像块处理策略,在保持计算效率的同时提升复杂背景下的检测性能。文章详细介绍了模块结构、原理优势,并提供了三种改进方案:1)在主干网络添加LRSA层;2)将关键模块替换为DSC3k2_LRSA;3)采用HyperACE_LRSA结构。配套提供了完整的PyTorch实现代码和YAML配置文件,展示了该模块如何通过局部注意力机制平衡检测精度与推理速度。

Ai缝合怪、助力小伙伴高效发论文 344

【STL】set

在 C++ STL 标准库中,set 是一个关联式容器,表示一个集合,用于存储唯一元素的容器(去重),set 中的元素会自动按照一定的顺序排序(默认情况下是升序)。

jmlangel_的博客 1366

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C++(标准库):18---STL容器之(关联式容器set、multiset)

待续

董哥的黑板报 1053

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++示例:学习C++标准库std::set集合容器的使用

std::set是C++ STL标准模板库中的一个集合容器,它存储的元素是唯一的。本示例通过代码详细介绍std::set集合容器的功能使用。

天恩软件工作室 670

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++:用红黑数封装实现map,set

介绍set,map,封装红黑树实现set,map

2401_88433210的博客 660

STL源码剖析第五章

set 是 C++ STL 中的一个关联容器,具有自动排序、元素唯一性和不允许重复的特性。其底层实现基于红黑树(RB-tree),确保了高效的查找、插入和删除操作。自动排序:元素在插入时会自动按照指定的排序规则(默认升序)进行排列。元素唯一性:容器内不允许重复元素,插入重复元素会被忽略。时间复杂度:查找、插入和删除操作的时间复杂度均为 O(log n),由红黑树的高效性保证。自动排序与唯一键键(Key)按照指定的比较规则(默认less<Key>)自动排序,且每个键必须唯一。

weixin_52227132的博客 955

C++(标准库):19---STL容器之(关联式容器map、multimap)

待续

董哥的黑板报 980

map和set的介绍和使用

set的文档set直接翻译成中文是集合,而他与数学意义上的集合也有不同的地方,set是要求有序的,其次set中的元素不能被修改,元素是const的,但是允许插入删除set的有序是可以自行定义升序或者降序的,默认是按照小于排序(升序),不允许重复值set容器通过key访问单个元素的速度比unordered_set慢,但是都允许根据顺序对子集直接迭代set在底层是使用二叉搜索树的红黑树实现的。

ye_yumo的博客 968

关联式容器:set 与 multiset 的有序存储

set(集合):存储唯一关键字(元素),自动按关键字升序(默认)排序,不允许重复元素。插入重复元素时,会被自动忽略,不会报错。multiset(多重集合):存储可重复关键字(元素),自动按关键字升序(默认)排序,允许重复元素。插入重复元素时,会全部保留,且按排序规则插入到对应位置,维持整体有序。两者都有序,唯一区别是set去重,multiset允许重复。

qq_43402143的博客 828

C++ STL 关联式容器:map 和 set 深度解析与面试指南

摘要 本文系统介绍了C++ STL中的关联式容器,重点讲解了树形结构的四种容器(map、set、multimap、multiset)及其底层实现。主要内容包括: 关联式容器概念:与序列式容器的区别在于存储键值对,提供高效检索和自动排序功能; 键值对(pair):定义、构造方式及常用操作; 树形结构容器:详细解析set/map的特性与使用方法,包括构造、迭代器、容量操作和修改操作等; 底层实现:基于平衡二叉搜索树(红黑树)实现,保证O(log₂n)的时间复杂度。

2303_77004089的博客 375

【数据结构】C++的map和set

本文介绍了STL中关联式容器map和set的实现原理与使用方法。关联式容器通过键值对存储数据,采用红黑树作为底层结构,具有高效的数据检索能力。文章详细分析了set和map的特性:set存储唯一元素,map存储键值对;两者都支持迭代器遍历和使用insert操作。重点探讨了红黑树的实现机制,包括迭代器设计、插入操作处理,以及map和set在底层实现上的差异。通过模拟实现RBTree、set和map类,展示了关联式容器的核心功能,如元素插入、遍历和平衡维护。这些容器通过严格的有序存储和高效的查找性能,在C++编程

wefg1的博客 1117

set 和 map 的一些理解

set和map

rushing的博客 371

C++ STL容器深度解析:vector、map、set、queue、deque性能对比与实战避坑

在C++编程中,数据结构的选择直接决定了程序的性能和内存效率。STL(标准模板库)提供了一系列容器,它们封装了不同的底层数据结构,如动态数组、红黑树和双端队列,每种结构都有其独特的性能特性和适用场景。理解这些容器的底层原理,例如vector的连续内存布局和map的红黑树实现,是进行高效编程和性能优化的基础。从概念上讲,容器的操作复杂度(如O(1)、O(log n)、O(n))决定了其在增删改查场景下的表现。其技术价值在于,通过提供标准化的接口,STL容器极大地提升了开发效率与代码可移植性。在实际应用中,根据

weixin_30847865的博客 380

【《STL源码剖析》提炼总结】 第4节:容器_2 关联式容器:红黑树

STL 关联式容器 红黑树 set map

qq_53157334的博客 292
上一篇: C/C++推荐用书
下一篇: 【转】STL六大组件-容器、迭代器、算法、仿函数、适配器、配置器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值