在c ++ 11和c ++ 17中插入地图的方法?

问题描述 投票:3回答:1

我使用]创建了地图>

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

[尝试插入键和向量元素时

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中是否不同?如果是,那是什么?还是我错过了什么?

我使用std :: map >索引创建了地图,尝试插入带有index.insert(std :: pair >(0,{0,1,...

的键和矢量元素>
c++ stl
1个回答
0
投票
indices.insert({ {0},{{0,1,2}} });

C ++ 17引入了新的重载以允许

。insert({{key},{value,args}}] >>)>语法。

© www.soinside.com 2019 - 2024. All rights reserved.