Серьезно, я бы этого не делал.
Вы только усложните свой код без необходимости. Вам потребуется вызов для вставки, чтобы сгенерировать новый элемент на карте и затем изменить его.
Просто ради этого (избегая двойного поиска, но создавая ненужный пустой вектор):
result.insert( std::make_pair( *beg, std::vector<int>() ) )
.first->second.push_back( lineCounter );
РЕДАКТИРОВАТЬ: реальный эквивалент (функциональность и производительность):
std::map<std::string,std::vector<int> >::iterator it = result.upper_bound( *beg );
if ( it->first != *beg ) {
it = result.insert( it, std::make_pair( *beg, std::vector<int>() ) ).first;
}
it->second.push_back( lineCounter );