对std :: list
class myclass
{
string name, surname;
public:
myclass() {}
~myclass() {}
string operator[](int i)
{
switch (i)
{
case 1: return name;
case 2: return surname;
}
}
};
template <typename T>
struct compare
{
int num;
indirect_compare() {}
indirect_compare(int i) : num(i) {}
~indirect_compare() {}
bool operator()(T * lhs, T * rhs) { return (*lhs)[num] < (*rhs)[num]; }
};
list<myclass*> lst;
int specified_by_user;
cin >> specified_by_user;
//later
lst.sort(compare<myclass>(specified_by_user));
它适用于我,但我不确定它是否正确。当我在结构比较中的构造函数和析构函数中添加了一些消息时,我看到构造函数仅被调用一次,但析构函数被调用了9次,我不知道为什么会发生。我试图调试这个程序来检查它,但我找不到原因。
感谢您的帮助!
的其他构造很可能是拷贝构造函数。你有没有监视那个? – Sheph
比较的ctor和dtor被命名为indirect_compare。这个例子是否编译?如果使用无效,也可以摆脱无参数。 – Sheph
'不确定它是否正确'对我来说看起来是正确的,有几种不同的方法可以做到这一点,但你的并不是错误的 – vu1p3n0x