• 締切済み

新たに定義したクラスでmapを作成する場合

STLのmapを使っているのですが、自分で定義したクラス(便宜上Keyと書きます)をキーにすると想定した動作になりません。 insert、iteratorによる参照はできるのですが、findがうまくいっていないようです。 値を見ると探しているキーと同じものが入っているのですが、2つのKeyのインスタンスが同一であるということが認識されていないのかfindの結果は(mapの名前).end()になってしまいます。 Keyのオペレータとして'<'は定義しましたが、「同一である」ことを示すために別のオペレータを定義する必要があるのでしょうか? あてずっぽうで'=='を定義してみましたがうまくいきません。 お知恵を拝借できればと思います。よろしくお願いします。

みんなの回答

  • KoHal
  • ベストアンサー率60% (110/181)
回答No.1

具体的にソースを見ないと何も分かりません。 問題が発生する最低限のソースを補足で提示してください。 あてずっぽうで1つ言うと Keyのポインタをmapのキーにしていて、Keyの値で検索しているつもりが、実はKeyのアドレスで検索されていた というのがありがちなポカですが。それは大丈夫ですか?

hime-ichigo
質問者

お礼

ご回答ありがとうございます。 かなり大きなプログラムの一部なので掲載しづらかったのですが、今補足を掲載しようとして最低限の部分だけ抜き出してみたところちゃんと動きました。 全体ではまだどこがおかしいのか分かりませんが、クラス定義とは別の部分に問題があるようですのでもう少し調べてみます。 よく確かめずに質問してしまって大変申し訳ありませんでした。

関連するQ&A

専門家に質問してみよう