【发布时间】:2017-10-23 04:22:39
【问题描述】:
这样的简单地图
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 中的错误?
【问题讨论】:
-
请记住,
std::map是一个 sorted 容器,它按 key 排序。而在Cyrillic alphabet в 位于 п 之前。 -
是的 - 正是!谢谢!
-
@Someprogrammerdude 当然,所讨论的字母顺序和相应的 Unicode 代码(无论哪种)的顺序可能会或可能不会有任何相似之处。