实验代码

 

#include <iostream>

#include <cstdlib>

#include <algorithm>

#include <string>

#include <vector>

#include <map>

using namespace std;

 

void strToVec_int(const string &str,vector<int> &vi)

{

string::size_type b = 0,e = str.find("|");

while(e != string::npos)

{

vi.push_back(atoi(str.substr(b,e).c_str()));

b = e + 1;

e = str.find("|",b);

}

vi.push_back(atoi(str.substr(b).c_str()));

}

 

struct userData

{

string m_strHuntingNum;          //号码

string m_strLastTime;  //最晚挂机时间

void initialize(string &s1,string &s2)

{

m_strHuntingNum = s1;

m_strLastTime = s2;

}

};

 

bool sort_vec(const userData &us1,const userData &us2)

{

return us1.m_strLastTime < us2.m_strLastTime;

}

 

struct tab1

{

int m_iHuntingList;

int m_iHuntingType;

string m_strHuntingSeq;

}; 

struct tab2

{

int m_iHuntingList;

int m_iGLFlag;

int m_iHuntingNumID;

string m_strHuntingNum;

string m_strLastAnswerTime;;

string m_strLastHunpUpTime;

void initialize(int i,int j,int id,const string &n,const string &ml ,const string &mh)

{

m_iHuntingList = i;

m_iGLFlag = j;

m_iHuntingNumID = id;

m_strHuntingNum = n;

m_strLastAnswerTime = ml;

m_strLastHunpUpTime = mh;

}

};

 

struct tab3

{

int m_iHuntingList;

int m_iGLHuntingListID;

string m_strGLHungingSeq;

void initialize(int i,int j,const string &s)

{

m_iHuntingList = i;

m_iGLHuntingListID = j;

m_strGLHungingSeq = s;

}

};

 

struct tab4

{

int m_iHuntingList;

int m_iGLHuntingListID;

int m_iGLHuntListNumID;

string m_strHuntingNum;

string m_strLastAnswerTime;

string m_strLastHunpUpTime;

void initialize(int i,int j,int k,const string &s1,const string &s2,const string &s3)

{

m_iHuntingList = i;

m_iGLHuntingListID = j;

m_iGLHuntListNumID = k;

m_strHuntingNum = s1;

m_strLastAnswerTime = s2;

m_strLastHunpUpTime = s3;

}

};

 

int main(void)

{

puts("Program Start...");

tab1 t_oTb1;

vector<int> t_vecHuntingList;

{//tab1数据 先按最后应答时间排序(type = 1)

t_oTb1.m_iHuntingList = 1;

t_oTb1.m_iHuntingType = 0;                 //假设是按最后应答时间排序

 t_oTb1.m_strHuntingSeq = "6|7|3|1|9|0";

 strToVec_int(t_oTb1.m_strHuntingSeq,t_vecHuntingList);

}

vector<tab2> t_vecTab2;

map<int,int> t_mapGLListSeq;

map<int,vector<userData> > t_mapSeqNum;

userData t_oUserData;

{//tab2数据  vector<tab2>

tab2 tmp_oTab2;

tmp_oTab2.initialize(1,0/*flag*/,0/*seq*/,"000"/*num --GLHuntingListID*/,"1200","1900");

t_vecTab2.push_back(tmp_oTab2);

tmp_oTab2.initialize(1,1/*flag*/,6/*seq*/,"8"/*num*/,"1200","1900");  //需要查第三张表

t_vecTab2.push_back(tmp_oTab2);

tmp_oTab2.initialize(1,1/*flag*/,1/*seq*/,"1"/*num*/,"1200","1900");  //需要查第三张表

t_vecTab2.push_back(tmp_oTab2);

tmp_oTab2.initialize(1,0/*flag*/,7/*seq*/,"777"/*num*/,"1700","1500");

t_vecTab2.push_back(tmp_oTab2);

tmp_oTab2.initialize(1,1/*flag*/,3/*seq*/,"9"/*num*/,"1200","1900");  //需要查第三张表

t_vecTab2.push_back(tmp_oTab2);

tmp_oTab2.initialize(1,1/*flag*/,9/*seq*/,"10"/*num*/,"1200","1900");  //需要查第三张表

t_vecTab2.push_back(tmp_oTab2);

for(vector<tab2>::iterator it = t_vecTab2.begin(); it != t_vecTab2.end(); ++it)

{

if(it->m_iGLFlag == 1)

{

t_mapGLListSeq[atoi(it->m_strHuntingNum.c_str())] = it->m_iHuntingNumID;

}

else

{

t_oUserData.initialize(it->m_strHuntingNum,it->m_strLastAnswerTime);

if(t_oTb1.m_iHuntingType == 2 || t_oTb1.m_iHuntingType == 3)    //按最晚时间或者同振

{

t_mapSeqNum[0].push_back(t_oUserData);

}

else

{

t_mapSeqNum[it->m_iHuntingNumID].push_back(t_oUserData);  

}

}

}

  }

 

  vector<tab3> t_vecTab3;         //第三张表数据

  {//tab3数据 vector<tab3>

  tab3 tmp_oTab3;

  tmp_oTab3.initialize(1,10,"2|7|9");

  t_vecTab3.push_back(tmp_oTab3);

  tmp_oTab3.initialize(1,1,"3|5|8");

  t_vecTab3.push_back(tmp_oTab3);

  tmp_oTab3.initialize(1,9,"1|8|9");

  t_vecTab3.push_back(tmp_oTab3);

  tmp_oTab3.initialize(1,8,"2|7|9");

  t_vecTab3.push_back(tmp_oTab3);  

  }

 

  vector<tab4> t_vecTab4;        //第四张表数据

  {

  tab4 tmp_oTab4;

  tmp_oTab4.initialize(1,10,9,"911","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,10,2,"922","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,10,7,"977","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,10,6,"12","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

 

 

  tmp_oTab4.initialize(1,1,5,"511","1100","1900");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,1,3,"522","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,1,8,"533","0900","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,1,6,"14","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

 

  tmp_oTab4.initialize(1,9,8,"991","2355","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,9,1,"8899","2100","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,9,9,"300","2330","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,9,6,"13","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

 

  tmp_oTab4.initialize(1,8,7,"777","2200","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,8,2,"888","1500","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,8,9,"999","2230","1300");

  t_vecTab4.push_back(tmp_oTab4);

  tmp_oTab4.initialize(1,8,6,"11","1200","1300");

  t_vecTab4.push_back(tmp_oTab4);

 

  }

 

  vector<int> t_vecGLHuntingList;

  vector<userData> t_vecUserData;

  for(vector<tab3>::iterator it = t_vecTab3.begin(); it != t_vecTab3.end(); ++it)   //循环第三张表

  {

  t_vecGLHuntingList.clear();

  t_vecUserData.clear();

   strToVec_int(it->m_strGLHungingSeq,t_vecGLHuntingList);

 

  for(vector<int>::iterator ix = t_vecGLHuntingList.begin(); ix != t_vecGLHuntingList.end(); ++ix)  //第三张表的seq循环

  {

  for(vector<tab4>::iterator iy = t_vecTab4.begin(); iy != t_vecTab4.end(); ++iy)  //循环第四张表

  {

  if(*ix == iy->m_iGLHuntListNumID && it->m_iGLHuntingListID == iy->m_iGLHuntingListID)

  {

  t_oUserData.initialize(iy->m_strHuntingNum,iy->m_strLastAnswerTime);

  t_vecUserData.push_back(t_oUserData);

  }

  }

 

  }

  if(t_oTb1.m_iHuntingType == 2 || t_oTb1.m_iHuntingType == 3)    //按最晚时间或者同振

  {

  t_mapSeqNum[0].insert(t_mapSeqNum[0].begin(),t_vecUserData.begin(),t_vecUserData.end());

  }

  else

  {

  t_mapSeqNum[t_mapGLListSeq[it->m_iGLHuntingListID]] = t_vecUserData;   //vector<userData>

  }

 

  }

  if(t_oTb1.m_iHuntingType == 1)     //这个条件新增加

  {

          string time;

          int i = 0;

          int seq = 0;

          vector<int>::iterator ma;

          for(vector<int>::iterator it = t_vecHuntingList.begin(); it != t_vecHuntingList.end(); ++it)        //按照seq的顺序打印所有号码

           {  

                cout<<"=================="<<*it<<"==========================="<<endl;

               

              for(vector<userData>::iterator ix = t_mapSeqNum[*it].begin(); ix != t_mapSeqNum[*it].end(); ++ix)

              {

              cout<<ix->m_strHuntingNum<<'/t'<<ix->m_strLastTime<<endl;

             

              if(ix->m_strLastTime > time)

              {

              time = ix->m_strLastTime;

              i = ix - t_mapSeqNum[*it].begin();   //下标

              seq = *it;                           

              ma = it;                             //迭代器

              }      

              }

             }

           cout<<"====================================================="<<endl;

           //cout<<time<<'/t'<<i<<'/t'<<seq<<endl;

           t_vecHuntingList.erase(ma);

           t_vecHuntingList.push_back(seq);

           t_mapSeqNum[t_vecHuntingList[0]].insert(t_mapSeqNum[t_vecHuntingList[0]].begin(),t_mapSeqNum[seq].begin()+i+1,t_mapSeqNum[seq].end());

           t_mapSeqNum[seq].erase(t_mapSeqNum[seq].begin()+i+1,t_mapSeqNum[seq].end());

 }

 

 

   vector<string> t_vecNum;

   if(t_oTb1.m_iHuntingType == 2 || t_oTb1.m_iHuntingType == 3)    //按最晚时间或者同振

    {

    stable_sort(t_mapSeqNum[0].begin(),t_mapSeqNum[0].end(),sort_vec);  //排个序

    for(vector<userData>::iterator it = t_mapSeqNum[0].begin(); it != t_mapSeqNum[0].end(); ++it)

    {

    cout<<"Type = "<<t_oTb1.m_iHuntingType<<'/t'<<it->m_strHuntingNum<<'/t'<<it->m_strLastTime<<endl;

    }

    }

    else

    {      

      for(vector<int>::iterator it = t_vecHuntingList.begin(); it != t_vecHuntingList.end(); ++it)        //按照seq的顺序打印所有号码

       {  

        for(vector<userData>::iterator ix = t_mapSeqNum[*it].begin(); ix != t_mapSeqNum[*it].end(); ++ix)

        {

       t_vecNum.push_back(ix->m_strHuntingNum);

       cout<<"Type = "<<t_oTb1.m_iHuntingType<<'/t'<<ix->m_strHuntingNum<<endl;

        }

   

       }

     }

 

   

return 0;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值