所以很可能这个问题已经被问过了。没找到。
每次我定义一个std::map并想向它插入一些值时,我都会使用这段代码:
using IntVector = vector < int > ;
map<int, IntVector> mapTmp;
int iKey = 7;
int iVal = 9;
if (mapTmp.find(iKey) == mapTmp.end())
mapTmp.insert(pair<int, IntVector>(iKey, IntVector()));
mapTmp[iKey].push_back(iKey);
让我烦恼的是 3 行:
if (mapTmp.find(iKey) == mapTmp.end())
mapTmp.insert(pair<int, IntVector>(iKey, IntVector()));
mapTmp[iKey].push_back(iVal);
Python 提供了一个非常有用的 dict 函数,称为:setdefault,它本质上将这 3 行合并为一个漂亮的行。假设我想用 C++ 编写它,它将是:
mapTmp.setdefault(iKey, IntVector()).push_back(iVal);
问题
- 是否
C++
提供这样的功能? - 如果不是,是否每个人都一直写这 3 行?