GCC 下STL 中sort函数无法正常工作?该怎么解决
GCC 下STL 中sort函数无法正常工作?
------解决方案--------------------
目测 sort第三参数返回值为bool类型,你的返回值状态太多了
- C/C++ code
vector<string> readFile(string fileName){ cout<<"FileName : "<<fileName<<endl ; assert(fileName.empty() == false ) ; ifstream in(fileName.c_str()) ; assert(in != NULL ) ; vector<string > data ; string line; while(! in.eof() ){ getline(in,line,'\n') ; data.push_back(line) ; } in.close() ; cout<<"Data Size : "<<data.size()<<endl ; return data ; } int compare_me(const string &s1,const string &s2){ //return s1.compare(s2) ; int len1 =s1.length() , len2 = s2.length() ; if(len1 < len2) return -1 ; else if(len1 > len2 ) return 1 ; else return 0 ; } void displayVector(vector<string> &data){ int i = 0 ; for(; i < data.size() ; i++){ cout<<(i+1)<<" :"<<data[i]<<endl ; if((i+1) % 10 == 0 ) getchar() ; } } void testSort(){ vector<string> data = readFile(__FILE__ ) ; displayVector(data) ; cout<<"data size At1 : "<<data.size()<<endl ; vector<string>::iterator end = data.end() ; vector<string>::iterator begin = data.begin() ; sort( begin ,end ) ; //sort( begin ,end ,compare_me ) ;// 为什么当用第三个参数的时候就能编译,但是不能运行? 我用的是GCC cout<<"data size At2 : "<<data.size()<<endl ; displayVector(data) ; }
------解决方案--------------------
目测 sort第三参数返回值为bool类型,你的返回值状态太多了