C++ STL 排序 查找 集合操作

C++常见十种排序方式 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。每次从待排序列中选出一个最小值,然后放在序列的起始位置,直到全部待排数据排完即可。实际上,我们可以一趟选出两个值,一个最大值一个最小值,然后将其放在序列开头和末尾,这样可以使选择排序的效率快一倍。 阅读详情

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <list>
#include <set>
#include <cstdlib>
#include <functional>
#include <numeric>
using namespace std;

template<typename T>
void printVector(vector<T> v)
{
 vector<T>::iterator it;
 for(it=v.begin();it!=v.end();++it) //使用迭代器输出
  cout<<*it<<" ";
 cout<<endl;
}

//排序与查找
int main()
{
 int A[]={1,2,3};
 const int N=sizeof(A)/sizeof(int);
 
 cout<<"The sum is: "<<accumulate(A,A+N,1)<<endl;
 cout<<"The sum is: "<<accumulate(A,A+N,1,multiplies<int>())<<endl;
 
 ///sort()排序字符串
 vector<string> fruits;
 fruits.push_back("apple");
 fruits.push_back("banana");
 fruits.push_back("pear");
 fruits.push_back("graphe");
 fruits.push_back("cherry");
 fruits.push_back("orange");
 fruits.push_back("apple");

 sort(fruits.begin(),fruits.end(),greater<string>());
 copy(fruits.begin(),fruits.end(),ostream_iterator<string>(cout," "));
 cout<<endl;

 stable_sort(fruits.begin(),fruits.end(),greater<string>());
 copy(fruits.begin(),fruits.end(),ostream_iterator<string>(cout," "));
 cout<<endl;

 //////binary_search() 二分查找//////////////////////////////////////
 int B[]={1,2,3,3,3,5,8};
 const int M=sizeof(B)/sizeof(int);

 for(int i=1;i<=10;i++)
 {
  cout<<"Searching for "<<i<<": "
   <<(binary_search(B,B+M,i)? "present" : "not present")
   <<endl;
 }

 ////lower_bound(),upper_bound()////////////////////
 int point[10] = {1,3,7,7,9};
 int tmp = upper_bound(point, point + 5, 7) - point;//按从小到大,7最多能插入数组point的哪个位置
 printf("%d/n",tmp);
 tmp = lower_bound(point, point + 5, 7) - point;////按从小到大,7最少能插入数组point的哪个位置
 printf("%d/n",tmp);

 ////////merge()/////////////////////////
 int A1[]={1,3,5,7};
 int A2[]={3,4,6,8};
 const int N1=sizeof(A1)/sizeof(int);
 const int N2=sizeof(A2)/sizeof(int);

 merge(A1,A1+N1,A2,A2+N2,ostream_iterator<int>(cout," "));
 cout<<endl;
 copy(A1,A1+N1,ostream_iterator<int>(cout," "));
 cout<<endl;

 ////inplace_merge()合并一个中前后两段分别有序的序列,即[first,middle)与[middle,last)分别有序,合并这两个子序列,并把结果保存在[first,last)中。
 int A3[]={1,1,2,3,1,2,5,7,9};

 inplace_merge(A3,A3+4,A3+9);
 copy(A3,A3+9,ostream_iterator<int>(cout," "));
 cout<<endl;

 /////set_union()///////
 int B1[]={1,3,5,7,9,11};
 int B2[]={1,1,2,3,5,8,13};
 char B3[]={'a','b','B','B','f','H'};
 int B4[]={'A','B','b','C','D','F','F','h','h'};

 const int L1=sizeof(B1)/sizeof(int);
 const int L2=sizeof(B2)/sizeof(int);
 const int L3=sizeof(B3)/sizeof(int);
 const int L4=sizeof(B4)/sizeof(int);

 set_union(B1,B1+L1,B2,B2+L2,ostream_iterator<int>(cout," "));
 cout<<endl;

 set_union(B3,B3+L3,B4,B4+L4,ostream_iterator<char>(cout," "));
 cout<<endl;

 return 0;
}

【C++】STL常用算法 STL常用算法 阅读详情

相关推荐

C++STL库之algorithm库总结

C++STL库之algorithm库总结排序相关操作二分查找操作最大最小操作堆操作:集合操作:划分操作:不修改内容的序列操作:修改内容的序列操作: 排序相关操作 is_sorted 检测指定范围是否已排序 is_sorted_until 返回最大已排序子范围 nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分 partial_sort 部份排序...

LNK2005的博客 431

C++ STL(十七):常用集合算法(set_intersection、set_union、set_difference)

文章目录0 常用集合算法简介【set_intersection、set_union、set_difference】1 set_intersection【将两个容器的交集存储至新容器】2 set_union【将两个容器的并集存储至新容器】3 set_difference【将两个容器的差集存储至新容器】 0 常用集合算法简介【set_intersection、set_union、set_difference】 算法简介: set_intersection:将两个容器的交集存储至新容器。 set_union:

NewsomTech 3854

STL算法详解:实用功能全面剖析

本篇文章将对STL算法进行详细的剖析和介绍,包括算法分类、算法函数列表及其使用方法、STL模板类容器相关的算法等。除了前面提到的基本算法之外,STL还提供了一些适用于模板类容器(如vector、deque、list等)的算法函数,下面列出一些常用的函数及其使用方法,具体说明可见代码注释。集合操作算法:用于处理集合类容器(如set、map、unordered_set等),包括交集、并集、差集、对称差等。序列操作算法:对容器中的元素进行一些常见的操作,例如排序、查找、删除、替换等。

CodeSpark的博客 130

c++ 集合常用函数及集合排序

Map map的内部结构是红黑数,所以STL中map默认是按key排序的。 初始化 map&lt;k, v&gt; map; // 定义了一个名为map的空的map对象; map&lt;k, v&gt; map(m2); // 创建了m2的副本map; map&lt;k, v&gt; m(b, e); // 创建了map对象ma...

hkl15111093042的博客 3583

C++编程基础与STL算法的实践应用

本文将深入探讨C++编程中的基础概念和STL算法的实际应用。通过分析书籍中提供的代码示例和练习答案,我们将理解C++的编程范式、基本语法以及STL算法的使用。同时,本篇博文也将提供一些编程技巧和解题思路,帮助读者更好地掌握C++语言。

weixin_29041443的博客 343

机器学习模型系列:随机森林的原理和示例介绍

让我们总结一下与其他监督式机器学习模型相比,随机森林的优缺点。优点在许多真实数据集上已知能提供高度准确的模型。通过结合多个决策树的预测,可以捕捉数据集中的复杂交互和模式。通过自动选择相关特征,可以有效处理高维数据集。与单个决策树相比,不容易过拟合。自助采样和每个节点的随机特征选择有助于减少过拟合并改善泛化能力。可以处理包括数值和分类特征在内的异构数据类型。可以处理缺失值而不需要填充。提供特征重要性的度量。集成中的树可以并行训练,因为每个决策树可以独立构建。模型的泛化误差具有理论上的界限。

数智笔记 1万+

C++ 集合中查找元素

#include <iostream> #include <set> using namespace std; int main() { set<char> cSet; //利用set对象创建字符类型的集合 cSet.insert('B'); //插入元素 cSet.insert('C'); cSet.insert('D'); cSet.insert('A'); cSet.insert('F'); cout << "old set:" &.

dxm809的博客 2834

别再为H桥烧MOS管发愁了!手把手教你用IR2104搭建稳定电机驱动(附自举电路详解)

本文详细解析了使用IR2104半桥驱动芯片构建高可靠H桥电机驱动电路的全过程。从芯片内部架构、自举电路原理到PCB布局技巧和实战调试方法,帮助工程师彻底解决MOS管烧毁问题。重点讲解了自举电容选型、死区时间控制等关键设计要点,并附有示波器实测波形分析,是电机驱动设计的实用指南。

我的博客 740

C++ STL容器中的排序(sort)与查找(find)算法的运算符运用及其重载问题

C++的标准模板库(Standard Template Library,STL)提供了很多的数据容器,以及许多的算法和其他一些组件,整个STL就是由容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分组成的,其中C++的容器就是各种数据结构的算法的一个集合。 C+...

不想不努力的博客 9913

模型检测--工具KeYmaera

论文:KeYmaera: A Hybrid Theorem Prover for Hybrid Systems 作者:Andre Platzer and JanKeYmaera摘要1 介绍2用于混合系统的KeYmaera验证工具3混合系统,混合自动机和混合程序 摘要 KeYmaera是一种用于混合系统的混合验证工具,它结合了演绎,实数代数和计算机代数证明者技术。它是自然的自动和交互式定理证明器 混合系统的规范和验证逻辑。 KeYmaera支持差分动态逻辑,它是用于混合程序的实值一阶动态逻辑,是混合自动机的程

ziigea的博客 1077

模型算力需求估算

(Billion Parameters,简称B)和训练/推理的计算任务复杂度,结合硬件计算能力(例如每秒浮点运算次数,FLOPS)来估算。以下是详细的方法和公式说明,以及实际的计算示例。算力需求的估算依赖于参数量、模型架构及硬件性能,结合训练/推理场景的特定要求来计算。通过上述公式和示例,我们可以定量分析不同任务的算力需求,并合理配置硬件资源以优化运行效率。结论:推理任务相对较轻,单台H100可以在30秒内完成此任务。推理算力需求一般远低于训练,因为只需要执行前向传播。,可以将训练时间缩短到约。

形上得其象,形下合于数;阴阳自济,玄理自明。 8957

C++STL常用算法

包含容器中常用的遍历算法、查找算法、排序算法、拷贝、替换算法、算术生成算法、集合算法。注意要包含相应的头文件

hcx的博客 1258

海康工业相机触发模式详解:软触发 vs 外触发,在C#里如何选与用?

本文深入解析海康工业相机的软触发与外触发模式,详细比较两者的特性差异、适用场景及C#实现方法。通过海康SDK配置指南和实战代码示例,帮助开发者掌握工业相机触发模式的选择与优化技巧,提升自动化检测系统的精确性和可靠性。

weixin_42635064的博客 556

cpp学习笔记:STL常用算法

cpp

ohhjack的博客 641

拼多多/Temu反爬参数逆向踩坑记:从浏览器调试到补环境完整复盘

本文详细解析了拼多多/Temu反爬参数`anti_content`的逆向工程实战,从浏览器调试到补环境完整复盘。通过JavaScript逆向技术,拆解关键函数定位、反混淆算法还原及补环境技术应用,帮助开发者突破电商平台复杂反爬系统,提升数据采集效率。

weixin_33978722的博客 913

五十天精通硬件设计第6天-放大器知识及选型

运算放大器(Operational Amplifier,简称运放)是一种高增益的直流耦合差分放大器,广泛应用于信号处理、滤波、比较、积分、微分等电路中。

whm128的博客 596

C++STL库之algorithm库

一,巡防算法         for_each(容器起始地址,容器结束地址,要执行的方法) [html] view plain copy #include iostream>   #include algorithm>   #include vector>      using namespace std;

wuce_bai的博客 2万+

【OpenClaw从入门到精通】第41篇:2026年4月最新版——从零开始搭建你的第一个安全AI助理(保姆级实战教程)

2026年3月CNCERT联合发布《OpenClaw安全使用实践指南》后,安全部署成为OpenClaw使用的核心前提。本文针对新手及进阶用户,基于官方安全指引,提供三套实战部署方案:阿里云一键部署(新手首选)、Docker容器隔离部署(进阶推荐)、本地安全安装(测试专用),并详解阿里云百炼Coding Plan API接入流程。全文涵盖环境准备、分步实操、安全加固、问题排查等全流程,所有命令可直接复制执行,无需依赖外部代码库。通过本文,读者可零基础搭建安全隔离的OpenClaw AI助理,兼顾实用性与安全性

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2200

C++ STL容器操作:6种常用场景算法

C++ STL容器操作:6种常用场景算法 [TOC] 引言   在日常软件开发工作中,容器操作如查找、排序、和元素替换等任务极为常见。幸运的是,C++的标准化利器——STL(Standard Template Library,标准模板库)为我们封装了一系列高效且灵活的算法,极大简化了这些操作。特别是自C++11版本以来,STL引入了一批新晋的通用算法,它们不仅功能强大,而且设计得更加人性化,旨在进...

LinuxTaoist的博客 652

VB摄像头监控

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

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

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

c++ algorithm 函数简介

algorithm编辑 algorithm意为"演算法",是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。 编程语言C++ 类    别C++标准库 头文件#include 命名空间using namespace std; 目录 1函数 ? 不修改内容的序列操作: ? 修改内容的序列操作: ? 划分操作: ? 排序操作: ? 二分

my_lord 2万+

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

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

【学习笔记】C++ STL常用算法

遍历算法 #include <iostream> using namespace std; #include <algorithm> #include <vector> void print(int val) { cout << val << " "; } class Print { public: void operator()(int val) { cout << val << " "; } };

码海畅游记录 154

黑马程序员C++提高编程_5.STL-常用算法

本文介绍了STL中常用的遍历和查找算法。遍历算法包括for_each(遍历容器元素)和transform(容器元素搬运),其中transform需要注意目标容器需提前开辟空间。查找算法包含find(按值查找)、find_if(条件查找)和adjacent_find(查找相邻重复元素),这些算法都返回迭代器,find_if可通过仿函数实现灵活查找条件。文中通过代码示例演示了各算法的基本用法,强调for_each是实际开发中最常用的遍历算法,而find系列算法则为容器查找提供了多种解决方案。

xiayulinlll的博客 1066

C++高阶笔记第五篇:STL常用算法

目标容器一定要有开辟好足够的空间接收原容器的数据。

2302_78977491的博客 716

c++:STL常用算法

算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等... <numeric>体积很小,只包括在几个序列容器上进行的简单运算的模板函数. <functiona...

陈宸的博客 266

C++ STL常用算法

算法主要头文件: <algorithm> 体积最大,涉及比较,交换,查找,遍历操作,复制,修改等 <numeric> 体积小,简单数据运算模板函数 <functional> 定义模板类,声明函数对象 常用遍历算法 for_each(iterator beg,iterator end,_func) //遍历容器 transform(iterator beg1,ite...

编程菜鸟 179
上一篇: C++ STL 分割算法
下一篇: C++ STL 堆的相关操作
liusoftware5
博客等级 码龄16年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值