C++静态初始化map<float,float[3]>

c++ statically initialize map<float, float[3]>

本文关键字:float gt 静态 初始化 lt C++ map      更新时间:2023-10-16

所以我有一个映射myMap,我试图静态初始化它(必须这样做)。

我正在做以下事情:

myMap = 
{
    {415, {1, 52356, 2}}, 
    {256, {356, 23, 6}},
    //...etc
};

然而,我得到了以下错误:"数组初始化器必须是一个初始化器列表。"

我上面的语法有什么问题?

您应该使用array<float, 3>而不是"普通"arrray:

#include <map>
#include <array>
#include <iostream>
int main()
{
    std::map<float, std::array<float, 3>> myMap
    {
        {415, std::array<float, 3>{1, 52356, 2}},
        {256, std::array<float, 3>{356, 23, 6}}
        //...etc
    };
    /* OR 
    std::map<float, std::array<float, 3>> myMap
    {
        {415, {{1, 52356, 2}}},
        {256, {{356, 23, 6}}}
        //...etc
    };
    */
    std::cout << myMap[415][0] << " " << myMap[256][1] << " " << std::endl;
    return 0;
}

我怀疑您正在尝试使用Visual Studio 2012或更早版本。直到Visual Studio 2013才添加对std::map上初始化列表的支持。