小编bar*_*son的帖子

使用const参数调用map :: find

我有一个对象:

map<A*, string> collection;
Run Code Online (Sandbox Code Playgroud)

我想调用map :: find函数,但是我对key的值是const,就像下面的代码一样,它不能编译:

const A* a = whatever();
collection.find(a);
Run Code Online (Sandbox Code Playgroud)

以下代码工作并执行与查找操作等效的操作:

const A* a = whatever();
map<A*, string>::iterator iter;
for(iter = collection.begin(); iter != collection.end(); ++iter)
    if(iter->first == a)
        break;
// iter now contains the result or map::end (just like map::find)
Run Code Online (Sandbox Code Playgroud)

但它可能没有find成员函数那么高效,而且它也很丑陋,掩盖了代码的意图.

我怎样才能调用find函数?

谢谢

编辑:

我故意在地图中使用指针类型作为键.我想要的行为是地图使用键的指针相等.(就像在我的循环代码中一样)

c++ const

5
推荐指数
1
解决办法
2098
查看次数

标签 统计

c++ ×1

const ×1