首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

自定义对象 bind1st vector查找自定义对象解决方案

2012-09-12 
自定义对象 bind1st vector查找自定义对象typedef struct YData{YData(int nData 0,std::string str

自定义对象 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

热点排行
Bad Request.