相关容器的find函数

有关容器的find函数
本帖最后由 softpart 于 2013-08-02 18:13:01 编辑
假设我定义了一个类

class person
{
private:
string pName;
int pAge;
string pGroup;
...
};


然后使用到了list或者vector容器,例如:

list<person> lst;
.....

那么有办法可以使用find函数在lst容器中寻找pName关键字的迭代器吗?或者可以使用其他什么简便办法呢?
Iterator

------解决方案--------------------
参考http://blog.csdn.net/zhoukuo1981/article/details/3452202
------解决方案--------------------
class person{}重载 == 操作符,就可以了

vector<person> vec;
person p;
p.pName = "csdn";
vector<person>::const_iteraor it = find(vec.begin, vec.endg, p)
it != vec.end();判断
------解决方案--------------------
简单的话用 find_if
------解决方案--------------------
新人表示看不懂这里面的因果关系……

引用:
Quote: 引用:

class person{}重载 == 操作符,就可以了

vector<person> vec;
person p;
p.pName = "csdn";
vector<person>::const_iteraor it = find(vec.begin, vec.endg, p)
it != vec.end();判断


我试了一下,但是有点问题:

class person
{
private://私有
    string pName;
    int pAge;
    string pGroup;
...
public:
bool operator==(const person &n) const
{
return (pName == n.pName);
}
};
bool person::operator==(const person &n) const
{
return (pName == n.pName);
}

但是假设在main函数中:


person p;
p.pName = "CSDN";


这里会提示pName为私有,这个如何操作?

------解决方案--------------------
类当中的私有成员,如果是在外面需要操作,要实现相应的读写成员函数提供给用户的。