以列表作为值初始化地图
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>()}};
我正在尝试初始化包含列表的地图
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>()}};