C++ std::tr1::unordered_map 中的相等性
std::tr1::unordered_map 遗漏相等(==)运算符是否有原因, std::map 存在哪个?
实现这个的好方法是什么?我正在考虑创建两组 unordered_map::value_type,从两个 hash_map 初始化它们,然后检查 为了两个集合相等。
Is there a reason that std::tr1::unordered_map left out the equality (==) operator,
which exists for std::map ?
What is a good way to implement this? I am thinking of creating two sets of unordered_map::value_type, initializing them from the two hash_maps and then checking
for equality of the two sets.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是委员会的决定,恕我直言,这是一个错误。它已针对 std::unordered_map 进行了更正(在 C++11)。
使用 std::equal 并不是查找无序容器相等性的好方法。毕竟,它们的顺序可能不同。
N3068 是引入平等的论文无序容器的比较。它解释了确定平等的动机和技术。
It was a committee decision that imho was a mistake. It has been corrected for std::unordered_map (in C++11).
Using
std::equal
is not a good way to find the equality of unordered containers. After all, they may not be in the same order.N3068 is the paper that introduced equality comparisons for the unordered containers. It explains the motivation and the technique for determining equality.