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 //稳定排序.两个或两个以上的相邻且相等 ...
随机推荐
- rem js相关
!function(n){ var e=n.document, t=e.documentElement, i=720, d=i/100, o="orientationchange" ...
- Mybatis传多个参数的问题 及MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1 问题
对于使用Mybatis ,传多个参数,我们可以使用对象封装外,还可以直接传递参数 对象的封装,例如查询对象条件basequery对象 <select id="getProductByP ...
- Qt之如何自定义model
Qt之如何自定义model https://blog.csdn.net/wei375653972/article/details/86592209
- Laradock中文文档
文档地址:https://laradock.linganmin.cn
- vmware 虚拟机中有时获取不到IP地址
转载: https://blog.csdn.net/valecalida/article/details/80683518 解决方法:打开vmware,然后找到编辑 然后点击虚拟网络编辑器 此时应该先 ...
- docker安装指定版本nexus3
安装maven私服 1 下载指定版本的镜像 docker pull sonatype/nexus3:3.18.1 2 宿主机创建一个映射目录 ,并设置所有者 mkdir -p /app/ne ...
- netcore 版本 切换 sdk
https://docs.microsoft.com/zh-cn/dotnet/core/tools/global-json
- Django-11-Form组件
1. 概述 Django的Form组件一般功能有: 验证用户输入 生成html代码 返回错误信息 创建Form类 from django.shortcuts import render, redire ...
- DISPLAY FORMAT 語法
- LOJ #3103. 「JSOI2019」节日庆典
题意 给定字符串 \(S\) ,对于 \(S\) 的每个前缀 \(T\) 求 \(T\) 所有循环同构串的字典序最小的串,输出其起始下标.(如有多个输出最靠前的) \(|S| \le 3 \times ...