相关疑难解决方法(0)

std :: hash是否保证"相等"浮点数的哈希值相等?

对于几乎相等的问题std::hash,浮点专业化(例如,对于doubles或floats)是否可靠?也就是说,如果两个值(例如和)应该比较相等但不会与运算符进行比较,那么将如何表现?(1./std::sqrt(5.)/std::sqrt(5.)).2==std::hash

那么,我可以依靠double一个std::unordered_map关键来按预期工作吗?


我已经看到了" 哈希值浮动值 ",但是询问了提升; 我问的是C++ 11的保证.

c++ hash floating-accuracy c++11 stdhash

6
推荐指数
3
解决办法
2697
查看次数

使用迭代器时从 set/unordered_set 中提取

我刚刚了解了C++17中extract添加到std::set/的函数std::unordered_set。我知道这是有效的:

while (!my_set.empty()) {
  auto node_handle = my_set.extract(my_set.begin());
  auto elem = std::move(node_handle.value());
}
Run Code Online (Sandbox Code Playgroud)

但以下安全吗?(来自/sf/answers/2976399751/

for (auto it = my_set.begin(); it != my_set.end(); ) {
  auto node_handle = my_set.extract(it++);
  auto elem = std::move(node_handle.value());
}
Run Code Online (Sandbox Code Playgroud)

我知道extract传递给它的迭代器无效,因此在无效之前extract(it++)将下一个迭代器保存到其中。但是否保证不会使其他迭代器失效?ititextract

c++ c++17

5
推荐指数
1
解决办法
624
查看次数

标签 统计

c++ ×2

c++11 ×1

c++17 ×1

floating-accuracy ×1

hash ×1

stdhash ×1