我试图编写一个函数,它将从vector<string>
返回最短的字符串:
// Find the shortest string.
string shortestString(vector<string> v) {
string shortest;
int shortss = 0;
int i = 0;
for (string s : v) {
if (i = 0) {
shortss = s.length();
shortest = s;
i++;
}
else if (s.length() < shortss) {
shortss = s.length();
shortest = s;
}
}
return shortest;
}
IDK,如果我犯了一些愚蠢的错误,但它什么也没有返回。
这是我的main()
:
int main() {
vector<string> words = { "a", "ab", "abc" };
string shor = shortestString(words);
cout << shor;
}
什么都没打印出来。我做错了什么?
答案 0 :(得分:3)
您也可以使用STL算法来执行此操作。
smin = *std::min_element(v.begin(), v.end(),
[] (const std::string& s1, const std::string& s2) {
return s1.length() < s2.length(); }
);
答案 1 :(得分:2)
本声明:
if (i = 0) {
应该是
if (i == 0) {
使用单个等于=
,它是赋值语句,结果是分配的值。因此,它不会测试i
以查看它是否为零,它会将0分配给i
,然后不运行if
阻止。