我在排序字符串向量时遇到问题。我不应该要求字符串的数量(向量的大小),输入应该只包括应该排序的字符串。 为了找到矢量的大小以便对其进行排序,我尝试了这种方法,但它没有工作:
#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;
}
答案 0 :(得分:4)
你的循环条件没有任何意义。 str
不能转换为bool。你应该这样构造它:
while (cin >> str)
{
s.push_back(str);
count++;
}
否则,您的代码运行正常。如果您想避免保留计数器变量,可以使用s.end()
代替s.begin() + count
。最后,您不需要提供自定义比较器,默认情况下它已使用operator<
。
sort(s.begin(), s.end());