#include <iostream>
#include <set>
#include <string>
using namespace std;
struct Client {
string client_id;
int salary;
// allow client to sorted by salary
bool operator<(const Client& rhs) const {
return salary < rhs.salary;
}
// expect to search on client_id but this doesn't work
bool operator==(const Client& rhs) const {
return client_id == rhs.client_id;
}
};
int main()
{
set<Client> clients;
clients.emplace(Client{"a001", 10});
clients.emplace(Client{"a002", 20});
if (clients.find(Client{"a0001", 10}) != clients.end()) // Found
cout << "Found\n";
else
cout << "Not Found\n";
if (clients.find(Client{"a0002"}) != clients.end()) // Not Found
cout << "Found\n";
else
cout << "Not Found\n";
return 0;
}
的输出结果与此文档set::find
匹配。是基于容器的比较对象,而容器的比较对象又基于而不是。set::find
salary
client_id
问题> 在这种情况下,我需要Clients
根据他们进行排序,salary
但是在搜索时我想根据client_id
. 有没有办法解决这个问题?我想使用 STL 函数而不是自己编写循环。