#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 関数を使用したいと考えています。