像这样的简易地图
std::map<std::string, std::vector<int>> container = {
{"первый",{1}},
{"второй",{2}},
{"третий",{3}},
{"четвертый",{ 4 }}
};
for (auto it = container.begin(); it != container.end(); ++it)
{
auto tt = it;
// do smth
}
但是为了第二个元素({"второй",{2}},
)先行
并且这取决于文本 - 例如,如果第二个元素将使用英文文本“second”({"second",{2}},
) - 顺序将是正常的,这将是顺序的第二个元素。
谁可以解释发生了什么,或者这只是VS 2017版本15.3中的错误?
答案 0 :(得分:0)
我的错误是我忘记了std :: map是一个已排序的容器,我的情况下的关键是“первый”和“второй” - 所以俄语字母“второй”是第一个。
工作代码如下:
std::unordered_map<std::string, std::vector<int>> container = {
{"первый",{1}},
{"второй",{2}},
{"третий",{3}},
{"четвертый",{ 4 }}
};
但请记住,unordered_map没有保证订单!
答案 1 :(得分:0)
在这种情况下,更好的设计将是
std::map<std::vector<int>,std::string> container = {
{{1},"первый"},
{{2},"второй"},
{{3},"третий"},
{{4},"четвертый"}
};