2 charles su Charles_Su 于 2016.05.01 16:42 提问

用STL的map和算法的find_if实现名表表示和查找功能

#include
#include
#include
#include
using namespace std;
bool older_than_20(int birthdate)
{
return (2016 - birthdate / 10000)>20;
}
int main()
{
maptable_item;//创建一个map类容器,用于存储名表
//创建名表
table_item["Charles"] = 19960207;
table_item["Sam"] = 19970130;
table_item["Michael"] = 19951213;
table_item["Benjamin"] = 19930516;
table_item["Kim"] = 19990315;
table_item["Jacob"] = 19970625;
table_item["Robinson"] = 19960322;
table_item["Lin"] = 19970331;
//输出名表
cout << "名表信息如下:\n";
map::const_iterator it;//创建一个不能修改所指向的元素的迭代器
for (it = table_item.begin(); it != table_item.end(); it++)//遍历容器
cout << it->first << ": " << it->second << endl;//输出元素的关键字和值
map::const_iterator ilocation;//创建一个不能修改所指向的元素的迭代器
ilocation =find_if(table_item.begin(),table_item.end(),older_than_20);//为什么这会报错
if (ilocation == table_item.end())
cout << "没有找到" << endl;
else
{
cout << "年龄大于20岁的人有:" << endl;
cout << ilocation->first << ": " << ilocation->second << endl;
}

system("pause");
return 0;

}

2个回答

CSDNXIAOD
CSDNXIAOD   2016.05.01 16:51

STL_算法_查找算法(find、find_if)
STL 查找vector容器中的指定对象:find()与find_if()算法
C++ STL 算法:查找算法(1)find、find_if
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

oyljerry
oyljerry   Ds   Rxr 2016.05.01 22:16

find_if就是实现自己对我过滤条件函数来实现查找

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
STL_算法_查找算法(find、find_if)
C++ Primer 学习中。。。   简单记录下我的学习过程 (代码为主)   find 、 find_if     /**********************线性查找O(n) find(); find_if(); 注意: 1.如果是已序区间,可以使用区间查找算法 2.关联式容器(set,map)有等效的成员函数find();时间复杂度O(log(
stl find_if在map中查找元素的应用
stl find_if在map中查找元素的应用
stl 的find_if算法用来查找容器内的符合条件的元素
stl 的find_if算法用来查找容器内的符合条件的元素              例子如下: 1. 第一种方式 :在仿函数的构造函数中保存要比较的值。                             struct STableInfor { uint16 m_iTableId; }              先写仿函数:
简单的程序诠释C++ STL算法系列之三:find_if
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。      find_if算法 是find的一个谓词判断版本,它利用返回布尔值的谓词判断pred,检查迭代器区间[first, last)上的每一个元素,如果迭代器iter满足pred(*iter) == true,表示找到元素并
STL算法之查找
STL算法库中提供的查找相关算法主要有以下几种: 算法 功能 find 返回第一个等价于给定值的元素的迭代器 1 find函数原型:template <class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& val); 在 [first,l
用find_if查找vector内对象的成员
用stl的find方法查找一个包含简单类型的vector中的元素是很简单的,例如 [cpp] view plaincopy vector strVec;  find(strVec.begin(),strVec.end(),”aa”);   假如vector包含一个复合类型的对象呢比如 [cpp]
map按value值查找——find_if的使用
最近是经常使用stl中的map,于是就想记一些关于map的东西。这一篇中会讲到map按照value值查找的方法,就是find_if函数。 大家都知道在map中,排序是按照key值排的,map自带的find方法也是按着key值查找的,这在某些情况下可能会遇到一些麻烦。 譬如,map m_str中,传入一个char*需要查找在m_str中是否存在这个字符串,当然你大可以使用iterator遍历一些
STL 查找vector容器中的指定对象:find()与find_if()算法
1 从vector容器中查找指定对象:find()算法    STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停止处理的地方。注意:包含开始和结束的位置的元素。例子: #include "stdafx.h" #include #include #include using
map find find_if用法
#include #include #include #include using namespace std; bool equal(pair data, int target) { if (data.second == target) { return true; } else { return false; } } int main() { //
STL 结构体排序及查找 使用sort及find_if
//网上大多例子都只是基本数据类型,或者简单的只有一个成员的进行排序的例子或者查找的例子. struct MY_NODE  {     int x;     int y;      //大小比较,这里是按 y从小到大,在y相等是按x从小到大排序.     bool operator <(const MY_NODE &e) const     {         if(y==e.y)