gpt4 book ai didi

c++ - 在 C++11 和 C++17 中插入映射的方法?

转载 作者:行者123 更新时间:2023-12-02 04:42:25 24 4
gpt4 key购买 nike

我使用创建了 map

std::map<long,std::vector<long> > indices

尝试插入键和 vector 元素时

indices.insert(std::pair<long,std::vector<long> >(0,{0,1,2})); 

我收到大量以

结尾的错误
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/stl_map.h:685:9: note:   template argument deduction/substitution failed:
Main.cpp:44:66: note: candidate expects 2 arguments, 1 provided
indices.insert(std::pair<long,std::vector<long> > (0,{0,1,2}));

如果在编译期间我这样做

g++ Main.cpp -std=c++17

但是编译时没有任何错误

g++ Main.cpp -std=c++11

c++17 中的过程是否不同?如果是,那是什么?或者我错过了什么?

最佳答案

您的以上insert(std::pair<long,std::vector<long> >(0,{0,1,2}))看起来不错。如果它是 GNU C++ 17,它应该可以工作,我认为它在我的情况下有效。

我认为以下内容现在也适用于 C++17,

indices.insert({ {0},{{0,1,2}} }); 

C++ 17 引入了新的重载以允许 insert( { {key}, {value, args} } )语法。

关于c++ - 在 C++11 和 C++17 中插入映射的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60029605/

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