注册 登录
编程论坛 C++教室

求助find_if的使用

warmsnake323 发布于 2008-11-22 17:25, 1196 次点击
例如定义了一个结构体
typedef struct
{
   int num;
   string name;
}tt;
vector<tt> lotofname;
for(int i=0;i<50;i++)
{
   tt names;
cin>>names.num>>names.name;
lotofname.push_back(names);
}

若要使用find_if在这组tt中找到 特定name值的元素,应该如何使用find_if?
5 回复
#2
warmsnake3232008-11-22 17:45
发现重贴了
不过上一个帖子也没有看得懂的答案啊~
#3
zxwangyun2008-11-23 13:05
关键是谓词判断函数的的设置:
我自己构造了一个,谨供参考
bool compName(tt T){
    return T.name=="mm";//mm为特定的name值(自己设定)
}
//下面是find_if的用法:
vector<tt>::iterator iLocation;
iLocation=find_if(lotofname.begin(),lotofname.end(),compName);
if(iLocation!=lotofname.end())
    cout<<"找到第一个特定元素值相等的元素:"<<(*iLocation).name<<endl\
    <<"元素索引位置为:"<<iLocation-lotofname.begin()<<endl;
#4
warmsnake3232008-11-23 20:40
谢谢!!
可是如果名字要在运行时指定呢?这样好像就不行了吧
#5
zxwangyun2008-11-23 21:23
变通一下不就ok啦
自己动动脑筋的事情
#6
warmsnake3232008-11-25 12:02
回复 第4楼 warmsnake323 的帖子
这不是一个难度层面上的问题啊
谢谢你啦
我问问其他人吧
1