在不知道输入大小的情况下对字符串c ++的向量进行排序

时间:2015-01-11 07:27:50

标签: c++ sorting vector

我在排序字符串向量时遇到问题。我不应该要求字符串的数量(向量的大小),输入应该只包括应该排序的字符串。 为了找到矢量的大小以便对其进行排序,我尝试了这种方法,但它没有工作:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

bool sortfunc(string i , string j)
{
    return (i < j);
}


int main()
{
    vector<string>s;
    string str;
    int count = 0;
    do
    {
        cin >> str;
        s.push_back(str);
        count++;
    }
    while (str);
    sort(s.begin(), s.begin() + count, sortfunc);
    for (int i = 0; i < count; i++)
        cout << s[i] << endl;
}

1 个答案:

答案 0 :(得分:4)

你的循环条件没有任何意义。 str不能转换为bool。你应该这样构造它:

while (cin >> str)
{
    s.push_back(str);
    count++;
}

否则,您的代码运行正常。如果您想避免保留计数器变量,可以使用s.end()代替s.begin() + count。最后,您不需要提供自定义比较器,默认情况下它已使用operator<

sort(s.begin(), s.end());