【发布时间】:2020-07-13 20:31:21
【问题描述】:
我使用的是map<string,initializer_list<string>>,但我注意到initializer_list<string> 包含空字符串,即{"Red","Green","Blue"} 将是{"","",""}。
通过将initializer_list 替换为vector,问题将得到解决。
为什么我会有这种行为?
std::map<std::string, std::initializer_list<std::string>> container = { {"Color",{"Red","Green","Blue"}},{"Car",{"BMW","Seat"}} };
for (const auto& item : container) {
std::cout << item.first << std::endl;
for (const auto& option : item.second)
{
std::cout << option << std::endl; // option is always "", it should be "Red" or "Green" or "BMW" ...
}
}
【问题讨论】:
-
使用 gcc 10.1 x86-64 在 godbolt.org 上运行良好。
-
通过将initializer_list替换成向量,问题就解决了。
-
请将该信息添加到问题中,而不是作为评论。
-
Visual Studio 版本= Visual Studio 2019 版本 16.4,_MSC_VER= 1924