У меня есть список строк, и я пытаюсь привести все строки с определенным значением в конец списка. В коде, который я написал, я пытаюсь использовать functor и сортировку списка, чтобы довести все строки, равные «Hello» до конца списка.Перемещение элементов списка с определенным значением до конца списка
#include<iostream>
#include<list>
#include<string>
using namespace std;
struct DescendingFunctor
{
private:
string StructString;
public:
DescendingFunctor(string S) : StructString(S) {}
bool operator()(const string& LHS, const string& RHS)
{
return LHS > StructString;
}
};
int main()
{
list<string> s;
s.push_back("C++");
s.push_back("World");
s.push_back("Hello");
s.push_back("Hello");
s.push_back("World");
s.push_back("C++");
DescendingFunctor d("Hello");
s.sort(d);
return 0;
}
Однако, когда я пытаюсь использовать этот код, я получаю недопустимую ошибку компаратора. Я знаю, что источник этой ошибки с выражением -
return LHS > StructString;
Потому что, когда я заменить его
return LHS > RHS;
Список отсортирован в порядке убывания. Есть ли способ, которым я могу использовать list :: sort, чтобы довести все строки до «Hello» до конца списка? Если бы не то, что было бы хорошим способом достичь этого?
В моем понимании я передаю как LHS, так и RHS в качестве аргументов, но я использую только один из них. Я полагаю, что мое понимание неверно. Не могли бы вы объяснить, почему? – doktakay