STL之algorithm、numeric、functional
<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。
<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括假发和惩罚在序列上的一些操作。
<functional>中则定义了一些模板类用以声明函数对象。
STL提供了大量实现算法的函数模板,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能,从而大大地提升效率。
adjacent_find();在迭代器对标识元素范围内查找一堆相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。
例如:vecInt使用vector<int>声明的容器,现已包含1,2,2,4,5
it = adjacent_find(vecInt.begin(),vecInt.end());
此时*it == 2;
binary_search:在有序的序列中
查找value,找到则返回true,不可在无序序列中使用
bool bfound = binary_search(setInt.begin(),setInt.end(),);
count:利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数
int nCount = count(vecInt.begin(),vecInt.end(),elem);
count_if:利用输入函数,对标志范围内的元素进行比较操作,返回结果为true的个数
merge:合并两个容器
merge(vecIntA.begin(),vecIntA.end(),vecIntB.begin(),vecIntB.end(),vecIntC.begin());
sort:排序(默认升序)
sort(vecInt.begin(),vecInt.end());
random_shuffle:随即洗一次数据
random_shuffle(vecInt.begin(),vecInt.end());
reverse:倒序
reverse(vecInt.begin(),vecInt.end());
copy:拷贝复制函数
copy(vecIntA.begin(),vecIntA.end(),vecIntB.begin());
replase:
replace(vecIntA.begin(),vecIntA.end(),,));//3替换成8,其中3可以是函数满足条件的被替换
accumulate:求和
fill:填充某个数值
set_union:重复的部分没有进去
set_intersection:交集
set_difference:差集
for_each:回调函数去执行每一个元素
transform:调用之后改变自身值并写回到指定容器
STL之algorithm、numeric、functional的更多相关文章
- 数据结构中数组反转与STL库Algorithm中的reverse
数组是个基本的线性数据结构,其实是内存中的一个块,我们可以通过c++的new来分配一个数组 int* a= new int[5]; 然后填数组的每个元素 a[0]=1; a[1]=2; a[2]=6; ...
- STL下<algorithm>下的reverse函数
定义: reverse用于C++中,对给定区间所有元素进行排序,是一种反向函数,不具备排序功能.sort函数包含在头文件为#include<algorithm>的C++标准库中. 语法: ...
- STL下<algorithm>下的sort函数
定义: sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序.sort函数进行排序的时间复杂度为nlog2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#i ...
- STL中algorithm里的查找
首先,选择查找算法时,区间是否排序是一个至关重要的因素.可以按是否需要排序区间分为两组: A. count,find B. binary_search,lower_bound,upper_bound, ...
- STL - vector algorithm
// create vector with elements from 1 to 6 in arbitrary order vector<, , , , , }; // find and pri ...
- C++的STL
今天,看一段代码的时候发现只一句话就做了个排序,是这样的: sort(rotateArray.begin(),rotateArray.end()); 很震惊,后来查了一下sort的用法, sort函数 ...
- c++中级 STL基础学习(二)
deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...
- STL算法
STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...
- 【STL源码学习】STL算法学习之一
第一章:引子 STL包含的算法头文件有三个:<algorithm><numeric><functional>,其中最大最常用的是<algorithm>, ...
随机推荐
- 深入了解shell
接触linux很久了,但一直没有总线,老是尝鲜,什么都想学,但好多没多没有记住,特的总结了一些基本的东西,查了很多资料,不完善的方面我会慢慢的更新…… 操作系统与外部最主要的接口就叫做shell. ...
- java静态代理,动态代理,cglib代理
代理模式在我们的应用中是很常见的,例如拦截器,spring的事务管理等.之所以能被代理,是因为java允许我们通过反射机制动态构造目标对象,并调用相应的方法. 就好像拿到了目标对象的引用,自然可以在目 ...
- PAT_1010 一元多项式求导
题目描述: 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- Mediator 模式
在面向对象系统的设计和开发过程中,对象之间的交互和通信是最为常见的情况,因为对象间的交互本身就是一种通信.在系统比较小的时候,可能对象间的通信不是很多.对象也比较少,我们可以直接硬编码到各个对象的方法 ...
- Activity的"singleTask"之谜
官方文档称 以这种方式启动的Activity总是属于一个任务的根Activity.果真如此吗?本文将为你解开Activity的"singleTask"之谜. 任务(Task)是个什 ...
- 《python源码剖析》笔记一——python编译
1.python的架构: 2.python源码的组织结构: 3.windows环境下编译python:
- VC皮肤库之duilib
首先是个国产的开源 的,directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 .Window CE.Mobile等平台. Duilib ...
- There are no accidents.
愿你攒齐足够多的失望,开启新的生活. 要知道,瀑布是江河走投无路时创造的奇迹
- Ubuntu系统启动错误问题的解决
一.hub_port_status failed (err=-110) 1.问题产生的原因 笔者不知道出现这种错误是不是都是相同的原因,但是我的系统出现这种原因是由于: 1.更改了虚拟硬盘的大小和/e ...
- php的几个版本的区别?
1. VC6与VC9的区别:VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本.VC9版本是使用Visual Studio 200 ...