插入std :: map <int,std :: vector <int =“”>&gt;的短函数

时间:2016-03-07 16:22:26

标签: c++ c++11 insert stdvector stdmap

我发现自己常常处于编写以下代码的情况:

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中)?

1 个答案:

答案 0 :(得分:7)

我不认为你的功能特别冗长,但在这种情况下它可以简单地用dict[key].push_back(val)替换,因为地图上的operator[]默认构造值,如果它不存在。您不需要if阻止。