Я пытаюсь написать функцию, которая будет возвращать кратчайшую строку из 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;
}
ИКА, если я сделал некоторые глупые ошибки, но она ничего не возвращает. Вот мой main()
:
int main() {
vector<string> words = { "a", "ab", "abc" };
string shor = shortestString(words);
cout << shor;
}
Ничего не печатается. Что я делаю не так?
При инициализации '' shortss' к StD :: numeric_limits :: макс() ', вам не нужно, чтобы проверить на "первой" итерации. Другими словами, любая строка, которая у вас есть, будет короче, чем max int. –
crashmstr
OMG я не видел ошибку i == 0. – user3650284
Передайте свой вектор по ссылке const, иначе вы делаете ненужную копию. Если вы хотите быть супер умным, вы можете вернуть ссылку на кратчайшую строку из вектора. –