STL学习之find系列函数
这里先介绍find, find_if, find_first_of,三个函数。其余的以后再更新。
一、std::find()
用法:find(first, end, value);
返回区间[first,end)中第一个值等于value的元素位置;若未找到,返回end。函数返回的是迭代器或指针,即位置信息。
参考代码main(),查找findvalue的值
二、std::find_if()
用法:find_if(first, end, bool pred);
返回区间[first,end)中使一元判断式pred为true的第一个元素位置;若未找到,返回end。
参考代码main(),test_find_if();查找第一个被5整除的数,pred写成bool函数
三、std::find_first_of()
用法:find_first_of(first1, end1, first2, end2);
返回第一个区间迭代器位置,满足第一个区间[first1,end1)中的元素第一次出现在第二个区间[first2,end2)中。
通俗就是说顺序从第一个区间[first1,end1)中取一个元素,在第二个区间中找有没有相同的元素,如果有就返回第一个区间中元素位置;未找到则继续
用第一个区间的下一个元素在第二个区间找。
因此只要保证两个区间内的元素可以==即可,不用管装元素的容器形式。下面的例子我第一个区间用的vector、而第二个区间是list也是可以的。
参考代码main(),test_find_first_of();查找vector中第一次出现在list的元素。
代码示例:
bool divbyfive(int x)
{
return x% ? : ;
} void test_find_if(vector<int> vec)
{
vector<int>::iterator vec_it;
vec_it=find_if(vec.begin(),vec.end(),divbyfive);
if (vec_it!=vec.end())
{
cout<<"满足判断函数的数为: "<<*vec_it<<"位置在"<<vec_it-vec.begin()<<endl;
}
else
{cout<<"未找到满足判断函数的数"<<endl;
}
return;
} void test_find_first_of(vector<int> vec)
{
list<int> list2;
for (int i=;i>;i--)
{
list2.push_back(i);
}
vector<int>::iterator vec_it;
vec_it=find_first_of(vec.begin(),vec.end(),list2.begin(),list2.end());
if (vec_it!=vec.end())
{
cout<<"第一次出现在第二个容器的元素为: "<<*vec_it<<"位置在: "<<vec_it-vec.begin()<<endl;
}
else
{
cout<<"两个容器没有相同元素"<<endl;
}
} int main()
{
vector<int> vec;
int findvalue=;
for (int i=;i<;i++)
{
vec.push_back(i);
}
vector<int>::iterator vec_it;
vec_it=find(vec.begin(),vec.end(),findvalue);
if (vec_it!=vec.end())
{
cout<<findvalue<<" position is "<<distance(vec.begin(),vec_it)<<endl;
}
else
cout<<findvalue<<"is not found"<<endl; test_find_if(vec);
test_find_first_of(vec);
return ;
}
参考:http://www.cnblogs.com/heyonggang/p/3241789.html
STL学习之find系列函数的更多相关文章
- ###STL学习--函数对象
点击查看Evernote原文. #@author: gr #@date: 2014-08-13 #@email: forgerui@gmail.com 在stl中,函数对象被大量地使用,用以提高代码的 ...
- PHP进程通信基础——shmop 、sem系列函数使用
PHP进程通信基础--shmop .sem系列函数使用 进程通信的原理就是在系统中开辟出一个共享区域,不管是管道也好,还是共享内存,都是这个原理.如果心中有了这个概念,就会很方便去理解代码.由于官网上 ...
- 从简单需求到OLAP的RANK系列函数
同事问了一个非常简单的问题,怎么取出每个partition里面另外一个列的最小值? create table t1 (int c1, int c2); 假如按照c2分区,0-10,10-20,20 ...
- STL学习之路
本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者.这实际上是我学习STL的一篇笔记,老鸟就不用看了. 什么是泛型程序设计 我们可以简单 ...
- STL学习小结
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序
posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...
- ###STL学习--vector
点击查看Evernote原文. #@author: gr #@date: 2014-08-11 #@email: forgerui@gmail.com vector的相关问题.<stl学习> ...
- ###STL学习--关联容器
点击查看Evernote原文. #@author: gr #@date: 2014-08-23 #@email: forgerui@gmail.com STL中的关联容器. ###stl学习 |--迭 ...
随机推荐
- PHP超全局变量$_SERVER
$_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都 ...
- Java Swing intro
Java Swing intro 如果有Android app开发经验,快速上手Swing不是问题.UI方面有相似的地方. 简单的几行代码就能抛出一个框框,记录一下操作过程 1.先显示一个框框 Era ...
- input复选框操作的部分高频率使用代码
1. 获取单个checkbox选中项(三种写法): $("input:checkbox:checked").val() 或者 $("input:[type='checkb ...
- c#中Class和Struct使用与性能的区别
在Unity中很多已经定义为结构体的数据结构 Vector2, Vector3 和 Vector4 Rect Color和Color32 Bounds Touch 1.Class为引用类型,Str ...
- 移动端 transitionEnd函数用来检测过渡是否完成
注意的几点:兼容 'webkitTransitionEnd' 解绑 renmove tab_wrap.addEventListener('transitionEnd',transitionEnd); ...
- Cinnamon桌面是怎么回事儿
(linux mint 18.2 用户截图) Cinnamon的由来 在GNOME 3之前,GNOME是根据传统的桌面比拟(Desktop metaphor)而设计,到了GNOME 3便被GNOME ...
- 2013年五大主流浏览器 HTML5 和 CSS3 兼容性大比拼
2013年五大主流浏览器 HTML5 和 CSS3 兼容性大比拼 转眼又已过去了一年,在这一年里,Firefox 和 Chrome 在拼升级,版本号不断飙升:IE10 随着 Windows 8 在 ...
- 移动端touch事件封装
<meta charset="utf-8"><meta name="viewport" content="width=device- ...
- github、gitlab 管理多个ssh key
第一种方法: 通过 git 命令行来操作 1.cd ~/.ssh 2.ls 注:如果.ssh 目录下有文件存在那么表示之前添加过 3. ssh-keygen -t rsa -C "xxxxx ...
- ubuntu中ssh自启动
打开/etc/rc.local文件,在exit 0语句前加入: /etc/init.d/ssh start(前提是本身的启动方法是这样的才可以) 或者/usr/local/sbin/sshd(我使用的 ...