まず、セットを持っています
std::set<int*> my_set;
p
次に、特定の int ポインターが に存在するかどうかを確認する関数があります。これは、ポインターが存在する場合my_set
は返すだけで、そうでない場合は何もしません。true
false
関数は参照される を変更しないのでint
、ポインターを として受け取るのが自然const int*
です。つまり、
bool exists_in_my_set(const int* p)
{
return my_set.find(p) != my_set.end();
}
ただし、コードをコンパイルしようとすると、次のエラーが発生します。
error: invalid conversion from 'const int*' to 'std::set<int*>::key_type {aka int*}' [-fpermissive]
const int*
つまり、コンパイラは、 を呼び出したint*
ときに をにキャストしようとしますfind
。
とにかく、私の質問は次のとおりです。との既存の定義を使用して、を見つける、または少なくとも に存在するかどうかを調べるにはどうすればよいですか?p
my_set
p
my_set
p
my_set