【发布时间】:2014-12-17 02:20:49
【问题描述】:
我正在尝试编写一个从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;
}
没有打印任何内容。我做错了什么?
【问题讨论】:
-
如果将
shortss初始化为std::numeric_limits<int>::max(),则无需检查“第一次”迭代。换句话说,你拥有的任何字符串都会比 max int 短。 -
天哪,我没有看到 i == 0 错误。
-
通过 const 引用传递你的向量,否则你正在制作一个不必要的副本。如果你想变得超级聪明,你可以从向量中返回对最短字符串的引用。
标签: c++ string string-length