返回最短的字符串

use*_*284 0 c++ string string-length

我正在尝试编写一个函数,该函数将从 a 返回最短的字符串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;
}
Run Code Online (Sandbox Code Playgroud)

我不知道我是否犯了一些愚蠢的错误,但它什么也没返回。这是我的main()

int main() {
    vector<string> words = { "a", "ab", "abc" };
    string shor = shortestString(words);
    cout << shor;
}
Run Code Online (Sandbox Code Playgroud)

没有打印任何内容。我究竟做错了什么?

Jas*_*son 5

您还可以使用 STL 算法来执行此操作。

smin = *std::min_element(v.begin(), v.end(), 
                     [] (const std::string& s1, const std::string& s2) { 
                         return s1.length() < s2.length(); }
                     );
Run Code Online (Sandbox Code Playgroud)