Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用struct作为map中的键_C++_C++11 - Fatal编程技术网

C++ 使用struct作为map中的键

C++ 使用struct作为map中的键,c++,c++11,C++,C++11,我现在使用的是一个带有时间定义的“tm结构”键的地图 语句it=HashTime.find(tm结构对象)当它是迭代器时,我得到如下错误: 在'((const-CTime*)this)->CTime::HashTime.std::map::find[with(with)Key=tm,_-Tp=long int,_-Compare=CTime::Compare,_-Alloc=std::分配器,std::map::const\u迭代器=std:(const-std::map::Key\u-type

我现在使用的是一个带有时间定义的“tm结构”键的地图 语句
it=HashTime.find(tm结构对象)当它是迭代器时,我得到如下错误:

'((const-CTime*)this)->CTime::HashTime.std::map::find[with(with)Key=tm,_-Tp=long int,_-Compare=CTime::Compare,_-Alloc=std::分配器,std::map::const\u迭代器=std:(const-std::map::Key\u-type&&)((const-std::map::Key\mdu-type&)m*))=m_datesec'

这可能会帮助您:

#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;
    }
}
#包括
#包括
结构值信息
{ 
int值1;
int值2;
int值3;
valueInfo(常数A、常数B、常数C):
价值1(A)、价值2(B)、价值3(C){}
};
类值比较
{
公众:
布尔运算符(),
const valueInfo酒店
常数

{返回A.value2
it
HashTime
的类型是什么?如果使用
auto it=HashTime.find(…),它是否有效事实上我对C++有点新的东西,实际上我对C++有点新,实际上我对C++有点新,所以这是我编的,你能编辑你的文章并添加你的代码吗?谢谢你的文章已经解决了我的操作员超载错误。这就是我写的:ValueMaTimeTime:StultTM和Trf。{it=HashTime.find(trf);if(it==HashTime.end()){m_datesec=mktime(&trf);HashTime[trf]=m_datesec;}else{HashTime.find(trf);}}private:map HashTime;map::iterator it;long int m_datesec;};但我得到了一个错误:对'Time::MakeTime(tm*)的调用没有匹配的函数,我正在用strtime(strDate.c_str(),strFormat.c_str(),&m_tmDate)调用其他头文件中的MakeTime函数;struct tm trf=m_tmDate;cobj.MakeTime(&trf);其中m_tmDate是另一个tm结构,为其每个变量设置了一些值。valueComp是带有bool运算符()的类(const tm&A,const tm&B),const和cobj是时间类的对象。。