代码之家  ›  专栏  ›  技术社区  ›  Hooked

在矢量图上使用初始值设定项列表

  •  6
  • Hooked  · 技术社区  · 16 年前

    我一直在尝试初始化 <ints, vector<ints> > 使用新的0x标准,但似乎无法获得正确的语法。我想制作一个带有键:value=1的单个条目的地图:<3,4>

    #include <initializer_list>
    #include <map>
    #include <vector>
    using namespace std;
    
    map<int, vector<int> > A = {1,{3,4}};
    
    ....
    

    使用GCC 4.4.3时,它会出现以下错误:

    error: no matching function for call to std::map<int,std::vector<int,std::allocator<int> >,std::less<int>,std::allocator<std::pair<const int,std::vector<int,std::allocator<int> > > > >::map(<brace-enclosed initializer list>)

    编辑

    按照cogwheel的建议并添加额外的大括号,它现在编译时会发出一个警告,可以不用使用-fno reduce init list标志来消除该警告。这样做有危险吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Buğra Gedik    16 年前

    如上所述, {1,{3,4}} 是映射中的单个元素,其中键是 1 价值是 {3,4} . 所以,你需要的是 { {1,{3,4}} } .

    简化错误:

    error: no matching function for call to map<int,vector<int>>::map(<brace-enclosed initializer list>)
    

    虽然不是一个精确的错误,但还是有些帮助。