2012-02-03 34 views
0

我使用與主要作爲現在time.h中定義的「以舊換新結構」的地圖鍵時,我使用 聲明it=HashTime.find(tm structure object);它是迭代器,然後我收到錯誤,如:使用結構作爲地圖

no match for 'operator=' in '((const CTime*)this)->CTime::HashTime.std::map<_Key, _Tp, _Compare, _Alloc>::find [with _Key = tm, _Tp = long int, _Compare = CTime::compare, _Alloc = std::allocator<std::pair<const tm, long int> >, std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<const tm, long int> >, key_type = tm](((const std::map<tm, long int, CTime::compare>::key_type&)((const std::map<tm, long int, CTime::compare>::key_type*)m_ntmDate))) = m_datesec'

+0

什麼的'it'和'HashTime'類型?如果你使用'auto it = HashTime.find(...);'? – PeterT 2012-02-03 06:43:43

+0

你能發表一個最簡單的例子嗎? – 2012-02-03 08:25:04

+0

其實我對C++有點新,所以這是我編碼的 – 2012-02-03 09:55:50

回答

1

這可能會幫助您:

#include <iostream> 
#include <map> 

struct valueInfo 
{ 
    int value1; 
    int value2; 
    int value3; 

    valueInfo(const int A,const int B,const int C) : 
    value1(A),value2(B),value3(C) {} 
}; 

class valueComp 
{ 
public: 

    bool operator()(const valueInfo& A, 
      const valueInfo& B) 
    const 
    { return A.value2<B.value2; } 
}; 

typedef std::map<valueInfo,double,valueComp> MapCTYPE; 

int 
main() 
{ 
    MapCTYPE TMap; 

    valueInfo B(1,2,3); 
    valueInfo C(3,3,4); 

    TMap.insert(MapCTYPE::value_type(B,4.5)); 
    TMap.insert(MapCTYPE::value_type(C,8.4)); 

    MapCTYPE::iterator vc=TMap.find(MapCTYPE::key_type(1,2,8)); 
    if (vc!=TMap.end()) 
    { 
     std::cout<<"Success:"<<vc->second<<std::endl; 
    } 
} 
+0

非常感謝:)你的文章解決了我的操作符重載錯誤。這是我寫的:void MakeTime(struct tm&trf) {it = HashTime.find(trf); 如果(它== HashTime.end()){ = m_datesec mktime(&trf); HashTime [TRF] = m_datesec; } 別的 {HashTime.find(TRF); } } 私人: 地圖< struct tm,long int,valueComp> HashTime; map :: iterator it; long int m_datesec; }; 但是我收到錯誤:沒有匹配函數調用toTime: :MakeTimeTime(tm *) – 2012-02-06 04:57:48

+0

,我用strptime(strDate.c_str(),strFormat.c_str(),&m_tmDate)調用其他頭文件中的MakeTime函數; struct tm trf = m_tmDate; cobj。MakeTime(&trf);其中m_tmDate是另一個tm結構,它爲每個變量設置了一些值。 – 2012-02-06 05:01:40

+0

valueComp是具有bool操作符()(const tm&A,const tm&B)const且cobj是Time類的對象的類。 – 2012-02-06 05:03:51