インデックス付きのオブジェクトのリストをサポートしたいと思います。だから、例えば:複数のインデックスを持つオブジェクトのリストを表示するにはどうすればよいですか?
struct customer
{
string first_name;
string last_name;
Color favorite_color;
};
template <typename T>
class indexed_list
{
// ...
}
indexed_list<customer> allCustomers;
// ...populate the list...
list<customer> customersNamedBob = allCustomers.get_first_name("Bob");
list<customer> customersThatLikeRed = allCustomers.get_color(Colors.Red);
はもちろんのオプションは、SQLLiteまたはそのような何かを使用することですが、私はこの使用して簡単なC++データ構造をしたいと仮定すると、どのように私はこれについて行くのでしょうか?あるいは、すでに自由に入手できるものは何ですか?
私の計画は、データをlist<T>
として保存してから、インデックスを実際の値にバインドする一連の[unordered_]map<IdxT, list<T>::iterator>
を持つことです。理解できるように、任意のタイプT
の汎用を作ることはちょっと苦しいので、indexed_list
基本クラスの内部のヘルパーユーティリティを使用するか、そのようなものになるcustomer_list
クラスに入るロジックがあるかもしれません。思考?
'map *'の場合はどうなりますか? –
alseether
'find_if'はうまくいきますが、' list'のためにリストの各オブジェクトを訪問する必要があります。長いリストの場合、かなり遅くなります。 'set'などを使用すると、基本的に単一の要素に索引付けされますが、もっと必要な場合があります。間違いなく、すべてのフィールドにインデックスを付ける場合があります。 'map>'(私はあなたがこれを意味していたと仮定します)実際には単一の積分フィールドのインデックスを作成するでしょうし、基本的に私が示唆しているのは、単一のインタフェースにカプセル化されています。 –
Rollie