Фильтр Palindrome, функции работают отлично, но main () не компилируется - PullRequest
0 голосов
/ 07 мая 2019

Компилятор выдает мне одну ошибку, я перепробовал все, включая цикл for, но мне это не помогло, может, у кого-то есть идея? Функции отлично работают, но часть main () не

#include <iostream>
#include<vector>

using namespace std;


bool IsPalindrom(string s) {
    for (size_t i = 0; i < s.size() / 2; ++i) {
        if (s[i] != s[s.size() - i - 1]) {
            return false;
        }
    }
    return true;
}

vector <string> PalindromFilter(vector<string> words, int min_Length){
 vector<string> result;
 for(auto s : words){
    if (s.size() >= min_Length && IsPalindrom(s)){
        result.push_back(s);
    }
 }
 return result;

}

int main(){


cout << PalindromFilter({"abacaba", "aba"}, 4);
}

1 Ответ

0 голосов
/ 07 мая 2019

Обратите внимание на тип возврата функции PalindromFilter(). Возвращает вектор строки . Вы не можете напрямую распечатать содержимое вектора, используя cout.

Вместо этого вы можете попытаться сохранить возвращенные значения и использовать функцию отображения. Код для вашей справки:

// Function to display elements of the vector of strings
void Display(const vector<string> & vec)
{
    for (int i = 0; i < vec.size(); i++)
    {
        // Note that for printing a string you need to
        // use c_str() 
        cout << vec[i].c_str() << endl;
    }
}

В основной функции:

int main() 
{
    vector<string> output = PalindromFilter({ "abacaba", "aba" }, 4);
    Display(output);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...