std::map::find()
возвращает iterator
.
Вы можете разыменовать итератор, это не end()
без необходимости повторного поиска map
.
Для тривиального примера:
typedef std::map<char, int> test_t;
test_t test;
test.insert(std::make_pair('a', 1));
test_t::iterator found = test.find('a');
if (found != test.end())
{
std::cout << found->second;
}
else
{
std::cout << "Not found";
}
Возможно, не более элегантно с точки зрения количества кода, но более эффективно, чем то, что у вас есть в настоящее время.