0

2 列のデータとそれらのデータに対する CRUD 操作をサポートする C++ データ構造/コンテナーを設計/検索したいと考えています。STL コンテナーを確認しましたが、要件をサポートしているものはありません (間違っている場合は訂正してください)。私の正確な要件は次のとおりです

  1. 2 列のデータ構造。
  2. 以下の機能をサポート

    1. 特定のアイテムを検索します。

    2. 条件に一致するアイテムのリストを検索する

    3. 両方の列が上記の検索操作をサポートする必要があります。つまり、両方の列でデータを検索できるはずです。

    4. 特定のアイテムを更新する

    5. 特定のアイテムを削除する
    6. 新しいアイテムを追加

追加/削除操作よりも検索操作の方が高速であることを好みます。

さらに、このデータをスレッド間で共有するため、Mutex をサポートする必要があります (これらのデータに個別に Mutex Lock を実装することもできます)。

既存の STL のいずれかが私の要件を満たしているか、または私の要件に最適なライブラリまたはデータ構造が他にあるかどうか。

注: データベースまたは SQLite を使用してデータを保存することはできません。

よろしくお願いします、ディネッシュ

4

3 に答える 3

1

特定のアイテムを検索します。

一方向のマッピング (つまり、1 つの列の値に対する高速検索) が必要な場合は、map または multimap コンテナー クラスを使用する必要があります。ただし、標準ライブラリには双方向マップがないため、(マルチ) マップのペアとして独自のマップを構築するか、boost::bimap などの他のライブラリを使用する必要があります。

于 2012-07-09T14:24:12.993 に答える
1

列の 1 つが一意である場合は、おそらくMapを使用できます。それ以外の場合は、列を表す 2 つのメンバー変数を持つクラスを定義し、それをvectorに格納します。コンテナの検索に役立つアルゴリズムがあります。

于 2012-07-09T10:58:58.690 に答える
1

あなたの最善の策はBoost.Bimapです。どちらかの列に基づいて検索したいときに簡単になるからです。より多くの列が必要であると判断した場合は、Boost.Multi_index の方が適している可能性があります。ここに例があります

于 2012-07-09T14:33:37.600 に答える