利用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编程爱好者而言,实在是不可多得的好资料啊。 立即下载

相关推荐

Simulink实战:火电机组一次调频与AGC协同控制建模与仿真解析

本文详细解析了如何使用Simulink进行火电机组一次调频与AGC协调控制的建模与仿真。通过系统架构设计、参数设置和模块实现,阐述了如何实现两者的协同控制,确保电网频率稳定。文章提供了实用的建模技巧、参数整定经验和性能评估方法,为电力系统仿真工程师提供了有价值的实践指导。

c7d8e9的博客 307

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

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

wcj_______的博客 1万+

西电2023秋季机器学习复习提纲

西电2023秋季机器学习复习提纲,希望对学弟学妹有帮助

weixin_62083045的博客 5638

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

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发STM32H750VB使用STM32CUBEMX生成工程IAR+J-LINK调试准备工作CUBEMX生成的代码问题所在如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U

qq_37433166的博客 5344

H3C设备VRF配置实战:5步搞定多业务网络隔离(附排错技巧)

本文详细介绍了在H3C设备上配置VRF(虚拟路由转发)实现多业务网络隔离的实战方法。通过五步配置流程,从创建VPN-instance、绑定接口到配置独立路由表,帮助网络工程师在单台设备上构建逻辑隔离的企业级网络,并分享了高级路由配置与常见排错技巧。

gold8的专栏 936

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

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

木牛的博客 5876

集成学习综述—bagging/随机森林/adaboost/GBDT/XGBoost/LightGBM/catboost 原理和代码介绍

集成学习介绍 文章目录集成学习介绍1 基本概念1.1 定义基本定义集成学习类别参考链接1.2 基学习器(CART)介绍公式介绍例子讲解代码实践参考链接1.3 偏差(bias)和方差(var)公式推导图解参考链接2 Boosting类2.1 原理2.2 AdaBoost2.2.2 公式推导2.2.3 优点与不足优点不足应用2.2.4 代码实践2.2.5 参考链接2.3 GBDT原理介绍代码实践参考...

fzl的博客 4614

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

仿真学习系列(三十):Sigrity设计文件(Altium Designer和Allegro)导入

很多刚接触 Sigrity 的工程师都会产生疑问:Sigrity 功能这么多,是不是门槛很高?我能学得会吗? 其实,Sigrity 的核心并不在“操作难”,而是在“理解仿真背后的机理”。一旦掌握基本流程,你会发现它并没有想象中那么复杂,反而能大大提升你的高速设计能力。本节内容,就是从最简单的一步开始 —— 把你的设计文件正确导入 Sigrity。

案例文章,高速信号 521

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!!

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。

拥抱具身智能,昇腾Ascend C 3104

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

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

wesigj的博客 2472

学Simulink——基于直流电机的建模与控制场景实例:直流电机带负载突变时的动态响应仿真

在实际应用中,直流电机经常需要应对各种工作条件的变化,例如负载突变。了解电机在这种情况下的动态响应特性对于确保系统的稳定性和可靠性至关重要。通过仿真分析,可以预测电机在不同负载条件下的表现,并优化控制系统的设计。本文将详细介绍如何使用来构建一个直流电机带负载突变时的动态响应仿真模型,并通过仿真展示其应用效果。本文介绍了如何使用构建一个直流电机带负载突变时的动态响应仿真模型,并通过仿真展示了其应用效果。

xiaoheshang_123的博客 114

【STL】set

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

jmlangel_的博客 1366

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

待续

董哥的黑板报 1053

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

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

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

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

天恩软件工作室 670

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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、付费专栏及课程。

余额充值