C++(五十一) — 容器中常见算法(查找、排序、拷贝替换)
1、find();
find()算法的作用是在指定的一段序列中查找某个数,包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值。
例:fing(vec.begin(), vec.end(), val); //在vec中查找值val,该val可以是数字、字符串。
2、count();
count()算法的作用是查看给定序列中给定值出现的次数,同样包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值。
例:count(vec1.begin(), vec1.end(), 2);//在vec1中查看2出现的次数。
3、find_if();
find_if()算法的作用是在输入序列中查找第一个满足条件的元素,返回第一个指向满足条件的元素的迭代器。
例:auto wc = find_if(vec.begin(), vec.end(), [sz](const string &a){return a.size>=sz;});//其中sz为在使用find_if的函数内部定义的局部变量。
上诉算法得到的是第一个指向长度不小于sz的元素的迭代器,如果没有则返回vec.end();
4、count_if();
预先定义比较函数;
bool GreatThree(int num)
{
return num > ;
}
int num = count_if(v1.begin(), v1.end(), GreatThree);
5、for_each();
for_each()算法的主要作用是打印输出序列。接收三个参数,前两个为打印元素的范围,后一个为一个可调用对象。
例:for_each(wc, vec.end(), [](const string &s){cout << s << " ";});
cout << endl;
上述程序的作用就是打印输出序列中从wc到vec.end()中的元素。
6、adjacent_find();
查找重复元素,并返回第一个出现的位置。
例:vector<int>::iterator it = adjacent_find(vec.begin(), vec.end());
7、binary_search();
在有序序列中查找,找到后返回 true,注意,在无序序列中不可使用。
例:bool bFind = binary_search(setInt.begin(), setInt.end(), 5);
排序
8、merge(); 或者 sort(); 形式类似。
合并两个有序序列,放到另一个序列中。
int main()
{
// v1 + v2 = v3
vector<int> v1, v2, v3;
v1.push_back();
v1.push_back();
v1.push_back(); v2.push_back();
v2.push_back();
v2.push_back(); v3.resize();
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
//输出 1 2 3 4 5 6 7 8 9
vector<int>::iterator it;
for (it = v3.begin(); it != v3.end(); ++it)
{
cout << *it << endl;
}
system("pause");
return ;
}
9、random_shuffle()
随机打乱顺序,也可应用于字符串。
例:random_shuffle(v1.begin(), v1.end());
10、reverse()
倒序输出。
reverse(v1.begin(), v1.end());
拷贝替换
11、copy()
copy(v1.begin(), v1.end(), v3.begin());
12、replace(); replace_if();
replace(v1.begin(), v1.end(), 3, 8);//把容器v1中所有值为 3 的元素,替换为 8 。
bool greaterEqual5(int &n)
{
return n >= ;
}
// 容器中所有 满足条件的都替换为 8
replace_if(v1.begin(), v1.end(), greaterEqual5, );
C++(五十一) — 容器中常见算法(查找、排序、拷贝替换)的更多相关文章
- JS中常见算法问题
JS中常见算法问题 1. 阐述JS中的变量提升(声明提前) 答:将所有的变量提升当当前作用域的顶部,赋值留在原地.意味着我们可以在某个变量声明前就使用该变量. 虽然JS会进行变量提升,但并不会执行真正 ...
- js中常见算法
一.面试80%都要问的数组去重 数组去重的方式有多种,其实面试中主要是想靠对对象的理解.还记得我第一次去面试的时候,去重的时候用了2个for循环. //1循环一次 var arr1 = [1,2,3, ...
- Java 中常见的各种排序算法汇总
首先,Java中自已是有排序的 说明:(1)Arrays类中的sort()使用的是“经过调优的快速排序法”;(2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是 ...
- JavaScript 面试中常见算法问题详解
1.阐述下 JavaScript 中的变量提升 所谓提升,顾名思义即是 JavaScript 会将所有的声明提升到当前作用域的顶部.这也就意味着我们可以在某个变量声明前就使用该变量,不过虽然 Java ...
- [持续补充]开发过程中常见bug查找思路
文件夹下载不下来或者无法访问,很多时候是因为没有该文件夹的权限,或者没有将该文件夹挂载到对应docker下. 远程服务器和本地服务器测试结果不同,需要排查代码是否是git上同一版本的代码. 代码相同, ...
- 算法——查找排序相关面试题和leetcode使用
1.给两个字符串s和t,判断t是否为s的重新排列后组成的单词. s = "anagram", t = "nagaram", return true. s = & ...
- 集合案例--对ArrayList容器中的内容进行排序
package com.Set; import java.util.ArrayList; import java.util.Collections; import java.util.Comparat ...
- C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET
C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...
- stl_algorithm算法之排序算法
排序算法: 注意:容器中必须重载 op< ,排序中stl标准中要求用小于来进行比较. 7.53.sort //全排序. 7.54.stable_sort //稳定排序.两个或两个以上的相邻且相等 ...
随机推荐
- c++内存管理5-虚拟内存4区结构图
我们常说的32位系统为每个进程分配4G虚拟内存空间(而MMU负责把这些个4G虚拟内存映射到实际内存条的物理内存),其实只有0~3G才是真正完全属于进程本身,是我们所说的用户区:3~4G这1G是所有进程 ...
- android文件分享在android7.0以上版本报错的解决方案
最近在使用蓝牙进行文件分享时,出现了一个奇怪的问题.同样的代码在android5.1上可以顺利运行,但是在android7.0上就运行失败.出现如下的错误: Caused by: android.os ...
- LeetCode_453. Minimum Moves to Equal Array Elements
453. Minimum Moves to Equal Array Elements Easy Given a non-empty integer array of size n, find the ...
- SVN中trunk,branches,tags用法详解[重要]
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
- [转帖]TimesTen与Redis的对比
TimesTen与Redis的对比 2017-02-23 17:25:27 dingdingfish 阅读数 3682更多 分类专栏: TimesTen Oracle Redis In-Memory ...
- Python之路【第二十一篇】:JS基础
JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...
- mysql测试,配置环境 mysql' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
参考链接:https://www.cnblogs.com/ios9/p/9713388.html 1.设置一下环境变量: 右击我的电脑——>属性——>高级系统设置——> ...
- linux服务器同时运行两个或多个tomcat
第一步:条件:配置好jdk,如果没有配置好请看:https://www.cnblogs.com/weibanggang/p/11460537.html 第二步:下载安装tomcat 下载tomcat到 ...
- 一张图看懂SharpCapture
通过下面的图片,可以瞬间看懂整个类库的脉络.
- 利用jQuery-Word-Export导出word (含ECharts)
写在前面的话:写博客的初衷是想把自己学到的知识总结下来,在写的过程中,相当于又把知识梳理了一遍.我坚信有输入,有输出,技术才会进步.我一般都会自己写一个小demo,测试没有问题,再进行整理. 在实 ...