私はデータ構造を使用しており、これらのデータ構造を頻繁にソートしています。これらのデータ構造は、オブジェクト自体ではなく、オブジェクトへのポインタを保持しています。これで、単純な比較ファンクター (関数) を記述して、ポインターの並べ替え方法を並べ替えアルゴリズムに伝えることができます。
struct Object_ptr_comparer {
bool operator()(const Object* first, const Object* second) {
return *first < *second;
}
};
たとえば、次のように使用しますstd::sort
。
Object_ptr_comparer comp;
std::sort(data_str.begin(), data_str.end(), comp);
このソリューションの唯一の問題は、任意のタイプのクラスに対して追加のポインター比較ファンクターを作成する必要があることです。はい、継承とポリモーフィズムを使用して、ルート クラスのコンパレータのみを記述できますが、そうしたくありません。これを行う他のスマートな方法はありますか?