重载less比较符号。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//1 a<b
static inline int compareAlpha(const char &a,const char &b){
if(b-a>0){
return 1;
}else if(b-a<0){
return -1;
}else{
return 0;
}
}
//stra<strb
bool strComp(const std::string &stra,const std::string &strb){
int m=stra.size(),n=strb.size();
int i=0;
int min=m>n?n:m;
while(i<min){
if(1==compareAlpha(stra.at(i),strb.at(i))){
return true;
}else if(-1==compareAlpha(stra.at(i),strb.at(i))){
return false;
}
i++;
}
if(n>m){
return true;
}
return false;
}
int main(){
std::vector<std::string> vec;
int n=0;
{
std::string line;
getline(std::cin,line);
n=std::stoi(line);
}
for(int i=0;i<n;i++){
std::string line;
getline(std::cin,line);
vec.push_back(line);
}
std::sort(vec.begin(),vec.end(),strComp);
for(int i=0;i<n;i++){
std::cout<<vec.at(i)<<std::endl;
}
return 0;
}
c++的字符串可以直接比较。可以直接调用,最终结果就是按照升序排列。
std::sort(vec.begin(),vec.end());
网友评论