16,472
社区成员
发帖
与我相关
我的任务
分享
// maptest.cpp : 定义控制台应用程序的入口点。 //
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <map>
using na
mespace std;
typedef struct _sfdata {
int sow;
long long time_ms;
char datat[256];
}sfdata;
class SF_data_key {
private:
int Sow;
long long Time_ms;
public:
SF_data_key()
:Sow(0),
Time_ms(0)
{ }
~SF_data_key() { }
SF_data_key(const SF_data_key &t)
{ Sow = t.Sow;
Time_ms = t.Time_ms; }
SF_data_key &operator = (const SF_data_key &t)
{ Sow = t.Sow;
Time_ms = t.Time_ms;
return *this; }
bool operator == (const SF_data_key &t) const
{
if (Sow != t.Sow)
{
return false;
}
if (Time_ms != t.Time_ms)
{
return false;
}
return true;
}
bool operator > (const SF_data_key &t) const
{
if (Sow < t.Sow)
{
return false;
}
if (Time_ms < t.Time_ms)
{
return false;
}
return true;
}
bool operator < (const SF_data_key &t) const
{
if (Sow > t.Sow)
{
return false;
}
if (Time_ms > t.Time_ms)
{
return false;
}
return false;
}
void format(sfdata &d)
{
Sow = d.sow;
Time_ms = d.time_ms;
}
SF_data_key &format(int type, int d)
{
switch (type)
{
case 3://3秒时隙
if (d % 3 == 0)
{
Sow = d + 1;
Time_ms = 0;
}
else if (d % 3 == 1)
{
Sow = d + 1;
Time_ms = 500;
}
break;
case 6://6秒时隙
Sow = d + 3;
Time_ms = 0;
break;
case 12://12秒时隙
Sow = d + 6;
Time_ms = 0;
break;
default:
break;
}
return *this;
} };
int _tmain(int argc, _TCHAR* argv[])
{
map<SF_data_key,sfdata>memdata;
map<SF_data_key,sfdata>::iterator iter;
for (int i = 0; i < 200; i++)
{
sfdata sd;
sd.sow = i;
sd.time_ms = 0;
memset(sd.datat,0,sizeof(sd.datat));
sprintf(sd.datat,"数据 = %d",i);
SF_data_key mykey;
mykey.format(sd);
//memdata.insert(map<SF_data_key,sfdata>::value_type(mykey,sd));
pair<map<SF_data_key,sfdata>::iterator,bool>ret = memdata.insert(make_pair(mykey,sd));
if (!ret.second)
{
cout<<"插入失败!"<<endl;
} }
while(1) {
cout<<"输入要查询的秒计数0~199:"<<endl;
int sec = 0;
cin>>sec;
SF_data_key mykey;
mykey.format(3,sec);
iter = memdata.find(mykey);
cout<<iter->second.datat<<endl;
} return 0;
}
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <map>
using namespace std;
typedef struct _sfdata
{
int sow;
long long time_ms;
char datat[256];
}sfdata;
class SF_data_key
{
private:
int Sow;
long long Time_ms;
public:
SF_data_key() :Sow(0), Time_ms(0)
{
}
~SF_data_key()
{
}
SF_data_key(const SF_data_key &t)
{
Sow = t.Sow;
Time_ms = t.Time_ms;
}
SF_data_key &operator = (const SF_data_key &t)
{
Sow = t.Sow;
Time_ms = t.Time_ms;
return *this;
}
bool operator == (const SF_data_key &t) const
{
if ((Sow == t.Sow) && (Time_ms == t.Time_ms))
{
return true;
}
return false;
}
bool operator > (const SF_data_key &t) const
{
if ((Sow > t.Sow) && (Time_ms > t.Time_ms))
{
return true;
}
return false;
}
bool operator < (const SF_data_key &t) const
{
if ((Sow < t.Sow) && (Time_ms < t.Time_ms))
{
return true;
}
return false;
}
void format(sfdata &d)
{
Sow = d.sow;
Time_ms = d.time_ms;
}
SF_data_key &format(int type, int d)
{
switch (type)
{
case 3://3秒时隙
if (d % 3 == 0)
{
Sow = d + 1;
Time_ms = 0;
}
else if (d % 3 == 1)
{
Sow = d + 1;
Time_ms = 500;
}
break;
case 6://6秒时隙
Sow = d + 3;
Time_ms = 0;
break;
case 12://12秒时隙
Sow = d + 6;
Time_ms = 0;
break;
default:
break;
}
return *this;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
map<SF_data_key,sfdata>memdata;
map<SF_data_key,sfdata>::iterator iter;
for (int i = 0; i < 200; i++)
{
sfdata sd;
sd.sow = i;
sd.time_ms = i;
memset(sd.datat,0,sizeof(sd.datat));
sprintf(sd.datat,"数据 = %d",i);
SF_data_key mykey;
mykey.format(sd);
//memdata.insert(map<SF_data_key,sfdata>::value_type(mykey,sd));
pair<map<SF_data_key,sfdata>::iterator,bool>ret = memdata.insert(make_pair(mykey,sd));
if (!ret.second)
{
cout<<"插入失败!"<<endl;
}
}
cout<<memdata.size()<<endl;
while(1)
{
cout<<"输入要查询的秒计数0~199:"<<endl;
int sec = 0;
cin>>sec;
SF_data_key mykey;
mykey.format(3,sec);
iter = memdata.find(mykey);
if(memdata.end() != iter)
cout<<iter->second.datat<<endl;
}
return 0;
}
bool operator < (const SF_data_key &t) const
{
if (Sow > t.Sow)
{
return false;
}
if (Time_ms > t.Time_ms)
{
return false;
}
return false;
}
这个函数都返回false ???