как отсортировать массив векторных строк с помощью функции cmp - PullRequest
0 голосов
/ 08 июня 2018

Это моя функция сравнения

bool cmp(string* s1,string* s2)
{return(strlen(s1)>strlen(s2));}

Это мой векторный массив

vector<string>v(n);

Это моя функция сортировки

sort(v.begin(),v.end(),cmp);

Где я ошибся

1 Ответ

0 голосов
/ 08 июня 2018

Где я ошибся

Функция сравнения должна иметь подпись, подобную следующей:

 bool cmp(const Type1 &a, const Type2 &b);

Поэтому ваша функция сравненияможет выглядеть так:

bool cmp(std::string const& s1, std::string const& s2)
{
    return s1.length() > s2.length();
}

это сработало, пожалуйста, укажите причину, по которой это сработало

Это работает, потому что std::sort будет принимать 2 векторных элемента и отправлять ихфункция сравнения на каждом ходу.Вектор состоит из std::string s, вы можете передать их по значению или по ссылке, или по ссылке const, но вы не можете передавать указатели, как вы пытались (для этого вам понадобится std::vector<std::string *>, немного бессмысленно tbh)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...