gpt4 book ai didi

c++ - 为什么 vector 构造函数在 unordered_map emplace 中使用时只采用参数的最后一个值?

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:25 24 4
gpt4 key购买 nike

我正在尝试使用 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) 构建了 vector 。但实际结果是“000000000”,emplace 将 vector 构造为 (9),0 是默认值,9 是整数的数量。我对其他参数值进行了更多尝试,并意识到 emplace 仅采用 vector 参数中的最后一个值。这是为什么?

我仍然可以通过做来完成目标

vector<int> v(2,9);
amap.emplace('k',v);

但只是想知道为什么,并保存一行代码。

最佳答案

amap.emplace('k',(2,9));

这里 (2,9) 只是逗号分隔值。 , 之前的所有内容都被忽略。所以就像

amap.emplace('k', (9));

gcc 甚至会抛出警告

warning: expression result unused [-Wunused-value]

你可以使用下面的

amap.emplace('k', vector<int>(2,9));

关于c++ - 为什么 vector 构造函数在 unordered_map emplace 中使用时只采用参数的最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com