我讀到「庫確保指針類型的較少(和其他函數對象)被很好地定義」。它來自C++ Primer第5版。並且例子是:關於指針類型的STL函數對象
vector <string *> nameTable;
sort(nameTable.begin(), nameTable.end(), less<string *>());
但當我嘗試這個辦法:
string *p1 = new string("abc");
string *p2 = new string("abc");
cout << equal_to<string *>()(p1, p2);
它返回0,這意味着假。爲什麼?
編輯:對不起,我閱讀並理解錯誤的書。它說:
vector<string *> nameTable;
sort(nameTable.begin(), nameTable.end(), [](string *a, string *b) { return a < b; }); // undefined
sort(nameTable.begin(), nameTable.end(), less<string*>()); // ok. however, meaningless
指針不同,即使內容比較相等。 – Jarod42
您可以使用'sort(v.begin(),v.end(),少於())'對'vector v'進行排序,但是順序取決於字符串的地址而不是它們的值。 –
pschill