自定义对象 bind1st vector查找自定义对象
typedef struct YData
{
YData(int nData = 0,std::string str = "")
{
m_nData = nData;
m_strData = str;
}
int m_nData;
std::string m_strData;
bool operator == (const YData*& data) const
{
return data->m_nData == m_nData;
}
}YData,*PYData;
void CSTL_Vector::TestPVecData()
{
vector<PYData> vecPData;
for (int loop = 0; loop < 10 ; loop++)
{
YData *pdata= new YData(loop);
vecPData.push_back(pdata);
}
struct Finder : public std::binary_function<PYData,PYData,bool>
{
bool operator () (const PYData &data1, const PYData &data2) const
{
return data1->m_nData == data2->m_nData;
}
};
YData findData1(4);
binder1st<Finder> b1st1 = bind1st(Finder(),&findData1);
vector<PYData>::iterator itFind_if1 = find_if(
vecPData.begin(),
vecPData.end(),
b1st1
);
binder1st<equal_to<PYData>> b1st2 = bind1st(equal_to<PYData>(),&findData1);
vector<PYData>::iterator itFind_if2 = find_if(
vecPData.begin(),
vecPData.end(),
b1st2
);
}
第一个查找得到,但第二种用了equal_to就查找不到了......
[解决办法]
因为equal_to比较的是指针值
[解决办法]
不是自定义了指针比较器么,干嘛还用equal_to