まず、セットを持っています
std::set<int*> my_set;
p次に、特定の int ポインターが に存在するかどうかを確認する関数があります。これは、ポインターが存在する場合my_setは返すだけで、そうでない場合は何もしません。truefalse
関数は参照される を変更しないので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。
とにかく、私の質問は次のとおりです。との既存の定義を使用して、を見つける、または少なくとも に存在するかどうかを調べるにはどうすればよいですか?pmy_setpmy_setpmy_set