STL常用算法3

STL源码剖析——list容器的排序算法sort() 由于STL本身的排序算法sort接受的输入迭代器是随机访问迭代器,但是双向list链表容器的访问方式是双向迭代器,因此,不能使用STL本身的排序算法sort,必须自己定义属于自己访问的排序算法。我们从源码的剖析中,可以看到该排序算法思想类似于归并排序。 阅读详情

三、排序算法

1、创建堆make_heap

2、元素入堆push_heap(默认插入最后一个元素)

3、元素出堆pop_heap(与push_heap一样,pop_heap必须对堆操作才有意义)

#include <vector>??????

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(5);

v.push_back(6);

v.push_back(4);

v.push_back(8);

v.push_back(2);

v.push_back(3);

v.push_back(7);

v.push_back(1);

v.push_back(9);

make_heap(v.begin(),v.end());

v.push_back(20);

push_heap(v.begin(),v.end());

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

pop_heap(v.begin(),v.end());

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}

 

4堆排序sort_heap

使用:

make_heap(v.begin(),v.end());

sort_heap(v.begin(),v.end());

#include <vector>

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(3);

v.push_back(9);

v.push_back(6);

v.push_back(3);

v.push_back(17);

v.push_back(20);

v.push_back(12);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

make_heap(v.begin(),v.end());

sort_heap(v.begin(),v.end());

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}

输出结果:

3 9 6 3 17 20 12

3 3 6 9 12 17 20

5排序sort

函数原型:sort(v.begin(),v.end());

 

#include <vector>

#include <algorithm>

#include <iostream>

using namespace std;

void main()

{

vector<int> v;

v.push_back(2);

v.push_back(8);

v.push_back(-15);

v.push_back(90);

v.push_back(26);

v.push_back(7);

v.push_back(23);

v.push_back(30);

v.push_back(-27);

v.push_back(39);

v.push_back(55);

vector<int>::iterator ilocation;

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

sort(v.begin(),v.end());//比较函数默认

for(ilocation=v.begin();ilocation!=v.end();ilocation++)

cout<<*ilocation<<' ';

cout<<endl;

}

华为od 面试八股文_数据库_01_含答案 阅读详情

相关推荐

CATIA二次开发实战:我用VBA写了个BOM表自动导出工具,效率提升80%

本文详细介绍了如何利用VBA进行CATIA二次开发,构建BOM表自动导出工具的全过程。通过智能解析算法、异常处理机制和性能优化技巧,该工具将BOM表生成时间从2.5小时缩短至8分钟,效率提升80%。文章还探讨了与PDM系统集成和定制化报告生成等扩展应用,为机械设计工程师提供了实用的自动化解决方案。

weixin_33709590的博客 556

C++ 容器的排序算法

1. 概念 1.1 了解下方所有关于sort算法函数的作用 函数名 描述 sort 对给定区间所有元素进行排序 stable_sort 稳定排序,保证相等元素的原本相对次序在排序后保持不变 partial_sort 对给定区间所有元素部分排序(如找出100个同学中分数最低的5名) partial_sort_copy 对给定区间复制并排序 nth_element 找出给定区间的某个位置对应的元素 partition 使得符合某个条件的元素放在前面,把区间中的元素按某个条件

weixin_42442319的博客 1909

ROS激光雷达动态避障算法优化(C++实战)

本文深入探讨了ROS激光雷达动态避障算法的C++实战优化。针对动态环境的核心挑战,文章系统性地介绍了从激光数据预处理(降噪、瘦身)、动态障碍物检测与跟踪,到基于动态窗口法(DWA)的智能决策与调优的全流程。重点分享了如何将障碍物速度预测融入DWA打分函数,以实现更安全、流畅的避障,并提供了工程架构、性能优化及真机调试的实用建议。

weixin_29192141的博客 945

几种排序算法的实现与比较(c++容器)

1、插入排序算法

逸樵CS-BLOG 1403

太速科技-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡

当多块盘并行工作时,存储阵列读写带宽成指数增长,2块盘则≥4GB/s,4块盘则≥8GB/s,以此类推。存储阵列的存储容量由单盘配置决定,目前单块NVME存储盘存储容量可选择512GB、1TB、2TB、4TB、8TB、16TB。硬盘管理通过文件系统,FPGA的PCIeX4与 6U VPX主板互联,操作系统直接映射管理硬盘,也可以通过前面板QSFP+ 光纤导出给其他服务器设备。本方案优势就是集中的进行采集,存储,计算一体化,降低硬件成本、功耗,减小设备体积、重量。信号处理,无线电通信领域。

Orihard_的博客 678

ADS2023实战:手把手教你用Load-Pull设计40W LDMOS功率放大器(附工程文件)

本文以飞思卡尔MRF8P9040N LDMOS晶体管为例,详细介绍了在ADS 2023中设计一款40W功率放大器(PA)的全流程。内容涵盖从直流偏置设置、稳定性分析、核心的负载牵引(Load-Pull)仿真,到基于Smith圆图的匹配网络设计、谐波平衡性能验证,直至版图生成与优化。文章提供了手把手的实战指导和工程文件,旨在帮助射频工程师掌握高效率PA的设计方法与关键技巧。

cake8的博客 1072

对容器数据进行自定义排序

在cpp中我们常见的容器有string,vector,deque,queue,set(multiset),list,map(multimap),stack这几个。其中最常用的就是vector,list,map,所以这里就以这三个容器的排序为例进行分享我自己的想法。 这三个容器中的map特别一点,具有自动排序功能,但也仅是升序,下面会将如何实现降序等。 方法一:容器自带的排序功能--sort 这个功能只有list容器具有,并且默认为升序。 ...

LWX3289765163的博客 1711

差分运放实战:如何快速计算带直流偏置的电路(附详细推导步骤)

本文详细解析了差分运放电路在带直流偏置设计中的核心计算方法和实战技巧。通过可视化参数关系和分步拆解,帮助工程师快速掌握电路设计精髓,包括虚短虚断原理、偏置电压计算及非理想因素处理,提升信号调理和传感器接口设计的效率与精度。

o4p5q6r7s的博客 411

STL之算法——排序算法

一:介绍 常用的STL排序算法包括sort,reverse,merge,random_shuffle。 二:sort:对容器内元素进行排序 1.函数原型 sort(iterator begin, iterator end) 默认以升序方式对元素进行排序 sort(iterator begin, iterator end, _Pred) 自定义方式对元素排序 2.操作 #include <iostream> #include <algorithm> #include &

qq_38082979的博客 2072

XVF3800麦克风阵列实战:从选型到快速原型搭建

本文详细介绍了XVF3800麦克风阵列的选型与快速原型搭建实战经验。从开箱即用的特性到波束成形、回声消除等核心功能拆解,再到硬件设计避坑指南和固件开发技巧,帮助开发者高效实现智能语音设备的开发。特别适合智能音箱、会议终端等需要远场拾音和声源定位的应用场景。

weixin_29161719的博客 274

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3024

STL学习3常用算法3.5常用排序算法

1、merge 合并算法 1.1 需提供两个待合并容器与一个目标容器 1.2 待合并容器必须有序 且排序规则相同 1.3 目标容器需提前指定容量 1.4 合并后容器依然有序 与待合并容器排序规则相同 2、sort 1.1 只提供排序区间默认从小到大排序 1.2 若需其他排序规则需自定义回调函数或函数对象 1.3 ...

Schlangemm的博客 274

67、全球导航卫星系统授时弹性分析与建议

本文分析了全球导航卫星系统(GNSS)在授时过程中面临的问题,包括系统自身异常和外部干扰欺骗,并探讨了提升授时弹性的关键技术与解决方案。文章介绍了美国、欧洲及中国在弹性授时系统建设方面的进展,重点剖析了高精度原子钟、时间同步、干扰检测与识别等核心技术,提出了GNSS与其他授时系统互补的集成化发展路径。最后展望了未来授时系统向更高精度、更强弹性、更广应用的发展趋势,为构建安全可靠的国家授时体系提供参考。

corn8的博客 185

STL学习3常用算法3.4常用查找算法

1 、find 1.1 按元素查找 2.2 提供查找迭代器区间与查找元素 返回迭代器 2、find_if 2.1 按条件查找 2.2 查找区间(迭代器) 查找条件(一元谓词,若为二元需绑定) 2.3 返回迭代器 2.4 若为自定义数据类型 需要重载判断条件 3、count 3.1 按元素统计...

Schlangemm的博客 261

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

STL学习3常用算法3.8常用集合算法

1、set_intersection 求两个集合的交集 2、set_union 求两个容器的并集 3、set_difference 求两个集合的差集 4、两集合必须是有序序列 5、返回结果最后一个元素的迭代器位置 6、头文件#include&lt;algorithm&gt; 7、测试程序 #include"pch.h" #include&lt;iostream&gt; #incl...

Schlangemm的博客 393

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STL学习3常用算法3.7常用算数生成算法

1、头文件 #include&lt;numeric&gt; 2、accumulate 2.1 计算容器元素累计总和 2.2 第三个参数是起始累加的值 3、fill 3.1 填充算法 4、测试程序 #include"pch.h" #include&lt;iostream&gt; #include&lt;vector&gt; #include&...

Schlangemm的博客 257

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STL学习3常用算法3.3常用遍历算法

1、for_each 主要功能:遍历 1.1 有返回值 1.2 可以绑定参数 进行输出(利用适配器) 2、transformer搬运,目标容器要提前分配容量 3、测试程序 #include"pch.h" #include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;algorithm&gt; #include&...

Schlangemm的博客 287

(3)STL — 常用算法

【代码】(3)STL — 常用算法。

weixin_52542873的博客 107

STL学习3常用算法3.6常用拷贝替换算法

1、copy复制 1.1将容器中指定范围的元素拷贝到另一容器中 1.2 目标容器要有容量 2、replace按值替换 2.1 将区间内指定的旧元素替换为新元素 3、replace_if 按条件替换 3.1 将区间中符合条件的旧元素替换为新元素 4、swap 交换 4.1 交换两个容器中的所有元素 5 #include"pch.h" ...

Schlangemm的博客 225

【c++】STL常用算法3—常用排序算法

【c++】STL常用算法3—常用排序算法

FishC的博客 279

常用STL算法3_排序

#define _CRT_SECURE_NO_WARNINGS#include <iostream> #include <vector> #include <set> #include <list> #include <algorithm> #include <functional> #include <string> #include <iterator> //输出流 #include <time

YunLan天地间 334

【45C++STL-常用算法----3、常用排序算法】

这些C++常用算法,你需要掌握好.....

请关注我,不定时分享个人在大厂嵌入式开发工作经验 175

【C++中的STL】常用算法3——常用拷贝和替换算法

1、copy容器内指定范围的元素拷贝到另一个容器中2、replace将容器内指定的旧元素修改为新元素3、replace_if容器内指定范围满足条件的元素替换为新元素4、swap互换两个容器的元素。

qq_50563459的博客 540

C++提高编程(五)—— STL常用算法(3) :常用排序算法

3. 常用排序算法3.1 sort3.2 random_shuffle3.3 merge5.3.4 reverse 3. 常用排序算法   学习目标: 掌握常用的排序算法。   算法简介: sort    //对容器内元素进行排序 random_shuffle    //洗牌,对指定范围内的元素随机调整次序 merge    // 容器元素合并,并存储到另一容器中 reverse    // 反转指定范围的元素 3.1 sort   功能描述: 对容器.

大彤小忆的博客 3392

黑马c++ STL常用算法 笔记(3) 排序算法

当first<last时,不断swap()first和last位置的元素,first++,last--。2. random_shuffle //洗牌 指定范围内的元素随机调整次序。2. random_shuffle //洗牌 指定范围内的元素随机调整次序。3. merge // 容器元素合并,并存储到另一容器中。3. merge // 容器元素合并,并存储到另一容器中。4. reverse // 反转指定范围的元素。4. reverse // 反转指定范围的元素。

l141930402的博客 461

算法基础2.3哈希表,C++STL容器常用用法

哈希表 哈希表的主要内容是两大块。第一大块是哈希表的存储结构,第二大块是介绍一个常用的字符串哈希的方式。 哈希表的存储结构一般来说分成两大类,第一大类是开放寻址法,第二大类是拉链法。 哈希表最主要的作用是把一个比较庞大的一个空间或者是一个值域,把它映射到一个比较小的空间,一般情况下映射到从零到n,n一般来说可能是十的五次方或十的六次方这种级别。 例题: 维护一个集合,支持如下几种操作: I x,插入一个整数x; Q x,询问整数x是否在集合中出现过; 现在要进行N次操作,对于每个询问

sunluyang521的博客 885
上一篇: STL算法学习2
下一篇: STL常用算法4----mem_fun
htt9931
博客等级 码龄24年 43粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值