重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

STLのmapを使っているのですが、自分で定義したクラス(便宜上Keyと書きます)をキーにすると想定した動作になりません。
insert、iteratorによる参照はできるのですが、findがうまくいっていないようです。

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

A 回答 (1件)

具体的にソースを見ないと何も分かりません。


問題が発生する最低限のソースを補足で提示してください。

あてずっぽうで1つ言うと

Keyのポインタをmapのキーにしていて、Keyの値で検索しているつもりが、実はKeyのアドレスで検索されていた

というのがありがちなポカですが。それは大丈夫ですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

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

お礼日時:2005/10/02 20:57

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