Java では、変数の 1 つによってリスト内の特定のオブジェクトを見つけるためにコンパレータを使用する C++ 標準ライブラリ リストに似たものがありますか?
たとえば、ArrayList をループして特定のオブジェクトを探す代わりに、変数の比較をチェックします。特定のインスタンスを見つけるためにコンパレータ オブジェクトを使用する方法はありますか?
(注: 2 つの別個のリストが作成されるため、ハッシュマップを使用したくありません。ハッシュマップを使用せずにリストの機能が必要です。)
このようなものですが、Javaの場合:
#include <algorithm>
using namespace std;
class Cperson
{
string lastname, firstname, address, city;
int zipcode;
char state[3];
// this works for the last name
friend bool operator==(const Cperson& left, const Cperson& right);
friend bool firstEqualTo(const Cperson& left, const Cperson& right);
};
bool operator==(const Cperson& left, const Cperson& right)
{
return left.lastname == right.lastname;
}
bool firstEqualTo(const Cperson& left, const Cperson& right)
{
return left.firstname == right.firstname;
}
これで、他のフィールドを無視して、firstname フィールドで personlist を検索できます。
vector<Cperson> personlist;
// fill personlist somehow
Cperson searchFor; // should contain the firstname we want to find
vector<Cperson>::iterator fperson;
fperson= std::find(personlist.begin(),
personlist.end(),
searchFor,
firstEqualTo);