读书人

stl deque find() ,小弟我的find()找不

发布时间: 2012-02-28 13:06:35 作者: rapoo

求助:stl deque find() ,我的find()找不到我定义的数据
deque <CNewVideoUrl*> m_NewUrlList;
class CNewVideoUrl
{
public:
string m_NewVideoUrl;
string m_Referer;
public:
bool operator==(const CNewVideoUrl& NewVideoUrl) const;
};
bool CNewVideoUrlPool::HandleFindUrl(CNewVideoUrl* pNewVideoUrl)
{
deque <CNewVideoUrl*> ::iterator iter;

CNewVideoUrl* TempNewVideoUrl = NULL;
for(int i = 0; i < m_NewUrlList.size();i++)
{
TempNewVideoUrl = m_NewUrlList.at(i);
if(TempNewVideoUrl-> m_NewVideoUrl == pNewVideoUrl-> m_NewVideoUrl)
{
printf( "=====================================================\n ");
printf( "m_NewVideoUrl=%s\n ",TempNewVideoUrl-> m_NewVideoUrl);
if(TempNewVideoUrl-> m_Referer == pNewVideoUrl-> m_Referer)
{
printf( "m_Referer=%s\n ",pNewVideoUrl-> m_Referer); //能找到相等的
}
printf( "=====================================================\n ");
}
}
deque <CNewVideoUrl*> ::iterator iter1;
for(iter1 = m_NewUrlList.begin();iter1 != m_NewUrlList.end();++iter1)
{
CNewVideoUrl* sTempNewVideoUrl = NULL;
sTempNewVideoUrl = (*iter1);
if(sTempNewVideoUrl-> m_NewVideoUrl == pNewVideoUrl-> m_NewVideoUrl && sTempNewVideoUrl-> m_Referer == pNewVideoUrl-> m_Referer)
{
printf( "相等!!!!!!!!!!!!!!! "); ////能找到相等的
}
}
iter = find(m_NewUrlList.begin(),m_NewUrlList.end(),pNewVideoUrl); //为什么这个就找不到呢?总是返回m_NewUrlList.end();

if(iter == m_NewUrlList.end())
{
return false;


}
return true;
}

大家帮我看看iter = find(m_NewUrlList.begin(),m_NewUrlList.end(),pNewVideoUrl);为什么总是返回m_NewUrlList.end();

[解决办法]
把这个函数bool operator==(const CNewVideoUrl& NewVideoUrl) const;
写成友元函数的形式看看

读书人网 >C++

热点推荐