Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 带俄语文本的std::map中的奇怪顺序_C++11_Stl_Stdmap - Fatal编程技术网

C++11 带俄语文本的std::map中的奇怪顺序

C++11 带俄语文本的std::map中的奇怪顺序,c++11,stl,stdmap,C++11,Stl,Stdmap,像这样简单的地图 std::map<std::string, std::vector<int>> container = { {"первый",{1}}, {"второй",{2}}, {"третий",{3}}, {"четвертый",{ 4 }} }; for (auto it = container.begin(); it != container.end(); ++it) { auto tt = it;

像这样简单的地图

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
}
std::映射容器={
{"первый",{1}},
{"второй",{2}},
{"третий",{3}},
{"четвертый",{ 4 }}
};
for(auto-it=container.begin();it!=container.end();+it)
{
自动tt=it;
//做smth
}
但按顺序第二个元素(
{2},
)先开始

这是文本相关的-例如,如果第二个元素将与英语文本“second”(
{second',{2}}),顺序将是正常的,这将是顺序中的第二个元素


谁能解释发生了什么,或者这只是VS 2017版本15.3中的错误?

我的错误是我忘记了std::map是一个分类容器,我的例子中的键是“Пццц”和“цццццццццццц”-俄语

工作代码如下所示:

std::unordered_map<std::string, std::vector<int>> container = {
    {"первый",{1}},
    {"второй",{2}},
    {"третий",{3}},
    {"четвертый",{ 4 }}
};
std::无序映射容器={
{"первый",{1}},
{"второй",{2}},
{"третий",{3}},
{"четвертый",{ 4 }}
};

但请记住,无序的_地图没有秩序保证

在这种情况下,更好的设计是

std::map<std::vector<int>,std::string> container = {
{{1},"первый"},
{{2},"второй"},
{{3},"третий"},
{{4},"четвертый"}
};
std::映射容器={
{{1},"первый"},
{{2},"второй"},
{{3},"третий"},
{{4},"четвертый"}
};
  • 所以std::map将按数字键自动排序

请记住,这是一个已排序的容器,它按键排序。然后在……之前出现。是的,没错!谢谢大家!@当然,有些编程人员认为,所讨论的字母表的顺序和相应的Unicode代码(无论何种)的顺序可能有相似之处,也可能没有相似之处。工作正常吗?在什么意义上?std::unordered_map是无序的,也就是说,没有任何秩序是可以保证的。一般来说,问题是为什么会产生如此奇怪的秩序-在这个变体中,正如预期的那样工作,但当然“没有任何秩序是可以保证的”-您完全正确。。。