2016-03-07 4 views
2

Я нахожусь часто в ситуации, когда я пишу следующий код:Короткая функции для вставки в станде :: карту <Int, станд :: вектор <int>>

std::map<int, std::vector<int>> dict; 

void insert(int key, int val) { 
    if (dict.find(key) == dict.end()) { 
    dict[key] = std::vector<int>(); 
    } 
    dict[key].push_back(val) 
} 

Есть ли менее многословный способ (в C++ 11) записи этой функции вставки?

ответ

7

Я не думаю, что ваша функция особенно многословна, но в этом случае ее можно просто заменить на dict[key].push_back(val), потому что operator[] на карте по умолчанию создает значение, если оно не существует. Вам не нужен блок if.

+0

Отличный ответ! Итак, вы говорите, что мне нужно всего лишь позвонить dict [key] .push_back (val)? – user695652

+0

@ пользователь695652 есть – vu1p3n0x

Смежные вопросы