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

stl deque find() ,小弟我的find()找不到小弟我定义的数据

2012-02-28 
求助:stl deque find() ,我的find()找不到我定义的数据deque CNewVideoUrl*m_NewUrlListclassCNewVideo

求助: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;
写成友元函数的形式看看

热点排行