【发布时间】:2017-03-04 01:08:10
【问题描述】:
我正在尝试使用插入排序对字符串向量进行排序。
这是我的代码:
void insertionsort(std::vector<std::string> &strings)
{
typedef std::vector<std::string>::size_type size_type;
for(size_type i = 0;i < strings.size(); i++)
{
std::string const tmp = strings[i];
size_type j = i - 1;
while(j >= 0 && tmp < strings[j]) //this is the problem
{
strings[j + 1]= strings[j];
j--;
}
strings[j + 1]=tmp;
}
}
它给了我错误:
无符号表达式的比较 >= 0 始终为真
如果我使用 j > 0,该函数可以正常工作。但它完全忽略了字符串的第一行。
如果我有:
2 line1
3 line2
4 line3
5 line4
1 line5
然后它给了我:
2 line1
1 line5
3 line2
4 line3
5 line4
【问题讨论】:
-
使用有符号类型。 (并非无可争议,但标准委员会的几位杰出成员与我一起参与其中)。
标签: c++ vector insertion-sort