用了结构体,可能就更清晰了。
然后配合着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;
}