Примечание для новых читателей. Первоначальный вопрос касался контейнеров STL (не конкретно о std :: map)
. Следует отметить, что на большинстве контейнеров есть версия const оператора []. Это просто, что std :: map и std :: set не имеют версии const, и это результат структуры, которая их реализует.
Из std :: vector
reference operator[](size_type n)
const_reference operator[](size_type n) const
Также для вашего второго примера вы должны проверить, не найден ли элемент.
void MyClass::MyFunction( int x ) const
{
MyMap iter = m_map.find(x);
if (iter != m_map.end())
{
std::cout << iter->second << std::endl
}
}