我怎么能准确输出

时间:2017-11-07 17:03:45

标签: c++

我编写了一个代码,用它们的大小对一组字符串进行排序。如果字符串的大小相等,则必须保持集合的原始顺序。

当我输入 - > Top Coder comp Wedn在午夜

我的代码给我的输出是 - >午夜Coder Wedn来自午夜

但我想要输出 - >午夜Coder comp Wedn Top at

while(cin>>k){
        if(k=="m")
        break;
      w.push_back(k);
}
cout<<w.size()<<"\n";


for(i=0;i<w.size();i++)
{
    for(j=i+1;j<w.size();j++)
    {
        if(w[i].size()>1&&w[i].size()<50&&w[j].size()>1&&w[j].size()<50)
        {
        if(w[i].size()<w[j].size()&&i!=j)
            {
                string temp;
                temp=w[i];
                w[i]=w[j];
                w[j]=temp;
            }
            else if(w[i].size()==w[j].size()&&i!=j)
            {

            }
        }
    }
}

for(i=0;i<w.size();i++)
{
    cout<< w[i]<<" ";
}

}

1 个答案:

答案 0 :(得分:3)

使用https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm

在C ++中更简单的方法
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
using namespace std;

int main() {
    // Input strings from cin into a vector
    vector<string> v(istream_iterator<string>(cin), {});

    // sort vector based on lengths and preserve ordering
    stable_sort(v.begin(), v.end(), [](const string & a, const string & b) -> bool {
        return a.length() > b.length();
    });

    // print contents of vector to cout
    copy(v.begin(), v.end(), ostream_iterator<string>(cout, " "));
    return 0;
}

输入

Top Coder comp Wedn at midnight

输出

midnight Coder comp Wedn Top at 

std::stable_sort