我读到“库确保指针类型的较少(和其他函数对象)被很好地定义”。它来自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