用了结构体,可能就更清晰了。
然后配合着sort的排序。本身没有什么复杂的地方。
注意:cin输入后,后边会保留一个换行符,然后getline忽略空格时,就会造成换行符被读入。所以在cin之后用getchar吸收换行符。
引用大佬的话:
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; struct strl{ int size; string s; strl(int l,string ss):size(l),s(ss){} bool operator <(const strl r)const{ return size<r.size; } }; vector<strl> vec; string s; int n; int main(){ while(cin>>n){ getchar(); vec.clear(); while(n--){ getline(cin,s); if(s=="stop")break; vec.push_back(strl(s.size(),s)); } sort(vec.begin(),vec.end()); for(auto i:vec)cout<<i.s<<endl; } return 0; }