我正在尝试使用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个INT数。我在其他参数值中进行了更多的播放,并且意识到EMPLECE仅在矢量参数中获得了最后值。为什么?
我仍然可以通过做
来实现目标vector<int> v(2,9);
amap.emplace('k',v);
但是只是想知道为什么,并保存一行代码。
amap.emplace('k',(2,9));
这里的(2,9)
只是逗号分隔的值。,
之前的所有内容都被忽略了。所以就像
amap.emplace('k', (9));
gcc
甚至发出警告
警告:表达结果未使用[-wunused-value]
您可以使用以下
amap.emplace('k', vector<int>(2,9));
表达式 (2,9)
正在使用内置逗号运算符,其结果为 9
。
您需要提供适当的std::vector
对象,例如std::vector<int>(2, 9)
中的对象。