Unordered_map和Unordered_set在MSVC++和g++编译器
Unordered_map和Unordered_set在MSVC ++和G ++编译器中的工作方式不同。 插入顺序在MSVC ++中正确维护,但在G ++中不正确维护,
unordered_set<char> uset;
uset.emplace('b');
uset.emplace('a');
uset.emplace('d');
uset.emplace('c');
for (auto it : uset) {
cout << it << " ";
}
上面的代码在Windows上使用MSVC ++在Windows上打印BADC,其中使用GCC(G ++)在Linux上打印CDBA。 哪个是正确的? 我很长时间以来一直是Windows开发人员,只是惊讶地看到了Linux上的结果。
unordered_map and unordered_set are working differently in MSVC++ and G++ compilers.
The insertion order is maintained properly in MSVC++ but not in g++
unordered_set<char> uset;
uset.emplace('b');
uset.emplace('a');
uset.emplace('d');
uset.emplace('c');
for (auto it : uset) {
cout << it << " ";
}
The above code prints b a d c on windows with MSVC++ where as prints c d b a on linux using GCC(g++).
Which is correct?
I am a windows dev for long time, just surprised looking at results on linux.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据,顺序取决于哈希函数,这在不同的实现中可能有所不同。
According to https://en.cppreference.com/w/cpp/container/unordered_set , the order depends on the hash function, that might be different in different implementations.