アプリ版:「スタンプのみでお礼する」機能のリリースについて

3種類のキーを持ったデータの検索をしたいのですが、
mapで実現する場合、どんな方法があるのでしょうか

キー int A、キー int B、キー string C、VOL=クラスX

検索はA,B,Cでそれぞれ行うとした場合、以下のようなmapのtypedefを3種類設定することになるのでしょうか?
map<int, クラスX> aa;
map<int, クラスX> bb;
map<string, クラスX> cc;

これですと削除がする場合には3箇所mapを修正するひつようがありますので1箇所で処理でしないのでしょうか?

A 回答 (2件)

3つのmapをまとめてクラスにしてしまい、メソッドを用いて処理を一元化する方法もあると思います。



要素の数が少ないなら、listなどにいれてfind_ifで関数をかえて検索。

boostにはmulti_index_containerなるものもあるようです。

参考URL:http://hw001.gate01.com/eggplant/tcf/cpp/boost_m …
    • good
    • 0
この回答へのお礼

ありがとうございます。やはり3種類のmapを使うのですね。
参考になりました

お礼日時:2007/03/19 16:58

>3種類のキーを持ったデータ


??? それは3種類のmapが(各個独立して)存在するということ?

よく意味が理解できないけれども、
"A, B それと Cでキーを成す"ということならば、
↓のようにできる。

struct KeyType
{
 int A;
 int B;
 std::string C;
 bool operator<(const KeyType& rhs) const;
};
class X;

typedef std::map<KeyType, X> Hoge;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
A,B,Cを合成したものをキーにするものではなく、
A、B,Cのいずれかで検索するという意味でした。

お礼日時:2007/03/20 21:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!