| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1498 人关注过本帖
标题:求助!这里如何用stl 的find_if()?
只看楼主 加入收藏
sskicgah
Rank: 1
来 自:漳州
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-1-12
收藏
 问题点数:0 回复次数:4 
求助!这里如何用stl 的find_if()?

class Student
{
public:
……
void show();
private:
string name;//姓名
string id;//身份证
string e_id;//准考号
……
};
bool isValidID(const string &id){……};
bool isValidE_id(const string &eid){……};
bool isValidName(const string &n){……};

vector<Student> stu;//全局变量

//查找已有的学生信息
void Find()
{
    if(stu.empty())
    {
        cout<<"错误!还没有学生信息!\n";
        return;
    }
    int sch;
    string findstr;
    cout<<"通过什么方式查询?\n1.身份证\t2.准考证\t3.姓名\n";
    cin>>sch;
    if(sch==1)
    {
        cout<<"请输入要查找的身份证号码:\n";
        cin>>findstr;
        while(1)
        {
            
            if(!isValidID(findstr))
            {
                cout<<"错误的身份证号码!请重新输入:\n";
                cin.clear ();
                cin.ignore ();
                cin>>findstr;
            }
            else break;
        }
    }
    
    else if(sch==2)
    {
        cout<<"请输入要查找的准考证号码:\n";
        cin>>findstr;
        
        while(1)
        {
            
            if(!isValidE_id(findstr))
            {
                cout<<"错误的准考证号码!请重新输入:\n";
                cin.clear ();
                cin.ignore ();
                cin>>findstr;
            }
            else break;
        }
    }
    
    else if(sch==3)
    {
        cout<<"请输入要查找的学生姓名:\n";
        cin>>findstr;
        while(1)
        {
            
            if(!isValidName(findstr))
            {
                cout<<"错误的姓名!请重新输入:\n";
                cin.clear ();
                cin.ignore ();
                cin>>findstr;
            }
            else break;
        }
    }
    **=find_if(stu.begin(),stu.end(),??)//这里**定义成什么?  ??怎么添加函数,使我完成匹配的搜索?
         //这里怎么再显示找到的这个对象?
}
搜索更多相关主题的帖子: stl find 
2008-10-30 21:18
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
find_if算法函数由stl_algo.h文件提供实现
其函数原型如下:
template<class InputIterator,class Predicate>
InputIterator find_if(InputIterator first,InputIterator last,Predicate pred)
2008-10-30 21:45
sskicgah
Rank: 1
来 自:漳州
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-1-12
收藏
得分:0 
回复 2# 的帖子
就是Predicate pred不知道怎么写啊
2008-10-30 22:02
sskicgah
Rank: 1
来 自:漳州
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-1-12
收藏
得分:0 
暂时没人能解答吗?好想知道怎么写!
2008-10-30 23:06
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
//find_if算法函数的代码:
template<class InputIterator,class Predicate>
InputIterator find_if(InputIterator first,InputIterator last,Predicate pred){
    while(first!=last&&!pred(*first)) //检查pred(*first)是否为真
          ++first;
    return first;  //返回满足条件的首个元素的迭代器位置或末位置last
}
2008-10-31 07:16
快速回复:求助!这里如何用stl 的find_if()?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014122 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved