以列表作为值初始化地图

Initialization of map with a list as value

我正在尝试初始化包含列表的地图

map<string, list<int>> firstNamesMap = {{"name1", new list<int>}};

我收到以下错误:

error: could not convert ‘{{"name1", (operator new(8), (<statement>, ((std::list<int>*)<anonymous>)))}}’ from ‘<brace-enclosed initializer list>’ to ‘std::map<std::basic_string<char>, std::list<int> >’
 map<string, list<int>> firstNamesMap = {{"name1", new list<int>}};
                                                                 ^

我最初试图用 list<Data *> 而不是 list<int> 来初始化一个更大的地图,其中 "Data" 是之前声明的简单 class。尽管如此,它都会产生相同的错误。

不确定这是否重要,但我在 Cygwin 中使用 g++ 进行编译。

new list<int> 导致 指向 list<int> 的指针(即 list<int> *)。但是,查看 映射类型 map:

map<string, list<int>> 
            ^^^^^^^^^

您真正需要的是 list<int>,而不是 list<int>*


在初始化地图时尝试使用 list<int>() 而不是 new list<int>

map<string, list<int>> firstNamesMap = {{"name1", list<int>()}};