我正在尝试使用 unordered_map::emplace 来实现 unordered_map>
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main ()
{
unordered_map<char,vector<int>> amap;
amap.emplace('k',(2,9));
for(auto i : amap['k']){
cout << i;
}
}
我期望输出为“99”,因为我用 (2,9) 构造了向量。但实际结果是“000000000”,其中 emplace 将向量构造为 (9),默认值为 0,整数数为 9。我用其他参数值玩了一点,并意识到 emplace 只取矢量参数中的最后一个值。为什么?
我仍然可以通过做来完成目标
vector<int> v(2,9);
amap.emplace('k',v);
但只是想知道为什么,并保存一行代码。