首页 > 编程语言 >常用算法

常用算法

时间:2023-08-18 15:44:17浏览次数:39  
标签:容器 常用 end 迭代 iterator 元素 beg 算法

  • 算法主要是由头文件 <algorithm>  <functional>  <numeric> 组成。

  • <algorithm> 是所有 STL 头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等

  • <nuneric> 体积很小,只包括几个在序列上面进行简单数学运算的模板函数

  • <functional>定义了一些模板类,用以声明函数对象。

1.遍历

  •  for_each(iterator beg,iterator end,_func); //遍历容器元素,beg开始迭代器,end结束迭代器,-func函数或函数对象
  •  transform(iterator beg1,iterator end1,iterator beg2,_func); //搬运容器到另一个容器中
 1 //普通函数
 2 void myprint01(int val)
 3 {
 4     cout << val << " ";
 5 }
 6 
 7 //仿函数
 8 class myprint02
 9 {
10 public:
11     void operator()(int val)
12     {
13         cout << val << " ";
14     }
15 };
16 void test01()
17 {
18     vector<int> v;
19     for (int i = 1; i <= 10; i++)
20     {
21         v.push_back(i);
22     }
23     for_each(v.begin(), v.end(), myprint01);
24     for_each(v.begin(), v.end(), myprint02());
25 }

 

2.查找

  •  find(iterator beg,iterator end,value); //查找元素value,找到返回指定位置迭代器,找不到返回结束迭代器位置
  •  find_if(iterator beg,iterator end,_Pred); //按条件查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置,_Pred函数或者谓词(返回bool类型的仿函数)
  •  adjacent_find(iterator beg,iterator end); //查找相邻重复元素,返回相邻元素的第一个位置的迭代器
  •  bool binary_search(iterator beg,iterator end,value); //二分查找法,,,!!!在无序序列中不可用
  •  count(iterator beg,iterator end,value); //统计元素个数
  •  count_if(iterator beg,iterator end,_Pred); //按条件统计元素个数,_Pred谓词;

3.排序

  •  sort(iterator beg,iterator end,_Pred); //对容器内元素进行排序
  •  random_shuffle(iterator beg,iterator end); //洗牌 指定范围内的元素随机调整次序
  •  merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //容器元素合并,并存储到另一容器中,dest目标容器开始迭代器
  •  reverse(iterator beg,iterator end); //反转指定范围的元素

4.拷贝和替换

  •  copy(iterator beg,iterator end,iterator dest); //容器内指定范围的元素拷贝到另一容器中
  •  replace(iterator beg,iterator end,oldvalue,newvalue); //将容器内指定范围的旧元素修改为新元素
  •  replace_if(iterator beg,iterator end,_Pred,newvalue); //容器内指定范围满足条件的元素替换为新元素
  •  swap(container c1,container c2); //互换两个容器的元素,c1 容器1;c2 容器2.(同种类型的容器)

5.算术生成算法

算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric> 

  •  accumulate(iterator beg,iterator end,value); //计算容器元素累计总和,valuue 起始值;
  •  fill(iterator beg,iterator end,value); //向容器中添加元素value

6.集合算法

  •  set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //求两个容器的交集
  •  set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //求两个容器的并集
  •  set_difference(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //求两个容器的差集

标签:容器,常用,end,迭代,iterator,元素,beg,算法
From: https://www.cnblogs.com/hello-205112/p/17640682.html

相关文章

  • C++快速入门 第四十七讲:容器和算法
    C++标准库提供的向量(vector)类型从根本上解决了数组先天不足的问题(内存固定,如果不用那么多内存编译器也会为其分配)我们用不着对一个向量能容纳多少元素做出限定,因为向量可以动态地随着你往它里面添加元素而无限增大。还可以用它的size()方法查知某给定向量的当前长度(即包含的元素......
  • Docker常用命令
    dockerimages查看本地镜像dockersearchcentos搜索镜像dockerpullcentos:7下载centos7镜像dockertagcentos:7mycentos:1修改本地镜像的名字dockerrmicentos:7删除本地镜像dockerps-a查看所有容器,包括已经停止的容器dockerps查看正在运行的容器8dockerstop......
  • 常用数组方法
    1.push()末尾添加数据2.pop()末尾出删除数据3.unshift()头部添加数据4.shift()头部删除数据5.reverse()翻转数组6.sort()排序7.splice() 截取数组8.concat()合并数组9.join()数组转字符串10.slice()截取数组的一部分数据11.indexOf从左检查数组中有没有这个数值12.lastInde......
  • Echarts常用参数
    一些以后应该能用到的参数option={title:{//图表的标题配置text:'主标题文本',subtext:'副标题文本',show:true//是否展示标题},tooltip:{//提示框配置trigger:'item',//触发类型,可选值:'item'(数据项触发),'axis'(坐标轴触发),'none'(不触发)axisP......
  • java实现音乐随机播放算法
    importjava.util.*;publicclassRandomDemop{staticRandomrd=newRandom();//获取随机数的工具staticListnList=newArrayList();//保存随机数//获取随机数publicstaticvoidgetRandomNum(){for(inti=1;i<6;i++){nList.add(newInteger(rd.next......
  • 算法复杂度速查表
    https://zhuanlan.zhihu.com/p/158694568目录目录1.背景2.Big-OComplexityChart3.CommonDataStructureOperations4.ArraySortingAlgorithms1.背景最近看到一篇总结算法复杂度的博客,原作者Eric是为了面试方便而总结出了一份算法复杂度速查表,在此转载一下......
  • Redis扩容与一致性Hash算法解析
    推荐阅读AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间资源分享「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间https://drive.uc.cn/s/2aeb6c2dcedd4AIGC资料......
  • 前端埋点常用方法
    1.使用场景主要用于数据采集,如:性能分析,用户行为分析,日常信息采集,测试信息采集等。指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。.比如用户某个icon点击次数、观看某个视频的时长等等。2.方法常见的埋点上报方式有ajax,img,navigator.sen......
  • yum下载常用方法
    yum自动下载RPM包及其所有依赖的包至/root/rpm目录:yuminstall--downloadonly--downloaddir=/root/rpm<package-name>切换到下载目录rpm中批量安装rpm-ivh*--nodeps--forceyum命令本身就可以用来下载一个RPM包,标准的yum命令提供了downloadonly(只下载)的选项来达到这个......
  • sftp常用命令
    help查看sftp支持哪些命令ls 查看当前目录下文件cd指定目录lcd更改和/或打印本地工作目录pwd查看当前目录lpwd打印本地工作目录getxxx.txt下载xxx文件putxxx.txt上传xxx文件quit/bye/exit退出sftpsftp xxx.xxx.xxx.xxx 登录root用户......