Вызов map :: find с аргументом const

У меня есть объект:

map<A*, string> collection;

Я хотел бы вызвать функцию map :: find, но у меня есть значение ключа const, как в следующем коде, который не компилируется:

const A* a = whatever();
collection.find(a);

Следующий код работает и выполняет эквивалент операции поиска:

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)

Но, вероятно, он не так эффективен, как функция-член find, а также уродлив и маскирует цель кода.

] Как я могу вызвать функцию поиска?

Спасибо

Редактировать:

Я намеренно использую указатель для ключа на карте. Я хочу, чтобы карта использовала равенство указателей для ключей. (Как и в моем коде цикла)

5
задан bartsimpson 29 September 2010 в 00:34
поделиться