#include #include #include #include class SubjectData{ public: unsigned int m_Serial; std::string m_Dat; SubjectData(unsigned int in_Serial,const char *in_Dat) :m_Serial(in_Serial) ,m_Dat(in_Dat) { ; } }; inline bool operator >(const SubjectData &in_1,const SubjectData &in_2){ if(in_1.m_Serial > in_2.m_Serial){ return true; }else{ return false; } } typedef std::list SubjectList; inline bool ReadList(const char * in_Filename,SubjectList &io_list) { std::ifstream ifs(in_Filename,std::ios::binary); if(!ifs){ return false; } char *dat = new char[65535]; int serial; while(ifs){ ifs >> serial; ifs.getline(dat,65534); io_list.push_back(SubjectData(serial,dat)); } return true; } inline bool WriteList(const char *in_Filename,SubjectList & in_list){ std::ofstream ofs(in_Filename,std::ios::binary); SubjectList::iterator it; for(it = in_list.begin() ; it != in_list.end() ; it++){ ofs << it->m_Serial << it->m_Dat << "\r\n"; } } inline void DiffPrint(const char * in_msg,struct timeval&in_start,struct timeval&in_end){ double nano; nano = in_end.tv_usec - in_start.tv_usec; nano /= 1000000.0; nano += in_end.tv_sec - in_start.tv_sec; std::cout<() ); gettimeofday (&s4, &tzp); DiffPrint("sort add_list",s3,s4); gettimeofday (&s3, &tzp); subject.merge(add_list,std::greater() ); gettimeofday (&s4, &tzp); DiffPrint("subject.merge",s3,s4); gettimeofday (&s3, &tzp); WriteList("subject2.txt",subject); gettimeofday (&s4, &tzp); DiffPrint("WriteList",s3,s4); gettimeofday (&s2, &tzp); DiffPrint("Total",s1,s2); std::cout <