對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