【发布时间】:2016-06-16 07:08:55
【问题描述】:
我有一个字符串列表,我试图将所有具有特定值的字符串放到列表的末尾。在我编写的代码中,我尝试使用函子和列表排序将所有等于“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 作为参数传递,但我只使用其中一个。我认为我的理解是不正确的。你能解释一下原因吗?