// 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;
}
手機不好排版,各位多包含啊!!