问题标签 [unordered-set]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 来自 std 的 unordered_set
我必须将 Windows 代码重写为跨平台视图。这是示例:
每个代码中都有_Ptr
迭代器中的成员,但我在文档中找不到它。我认为它适用于视觉工作室(它是 stl 的实现)。任何想法如何更换它?什么是_Myval
?
升级版:
并且在线错误it->aabb
:
错误:在 '* it.std::__detail::_Hashtable_iterator<_Value, __constant_iterators, __cache>::operator-> 中请求成员 'aabb' _Value = qdt::QuadTreeOccupant*, bool __constant_iterators = true, bool _ cache = false, std:: _detail::_Hashtable_iterator<_Value, __constant_iterators, __cache>::pointer = qdt::QuadTreeOccupant* const*',属于非类类型'qdt::QuadTreeOccupant* const'</p>
c++ - 两个相同的 unordered_map 的顺序是否相同?
换句话说,如果我用完全相同的内容和相同的散列函数填充两个unordered_map
或unordered_set
对象,迭代它们会得到相同的键/值对序列吗?
如果是这样,那么它保持的条件是什么(例如,相同的散列函数,相同的键,不一定相同的值)。
c++ - 无序关联容器何时发生重新散列?
rehash
我在标准中发现这是无序关联容器中函数的后置条件:
发布:a.bucket_count() > a.size() / a.max_load_factor()和a.bucket_count() >= n。(n 是容器中的桶数)
我是否可以将上述内容视为在所有实现都满足上述任一条件时触发自动重新散列?或者,实现是否可以自由决定何时重新散列,而上述内容仅与rehash
功能有关?
c++ - std::unordered_set 中元素的要求
my_type 在这里必须满足哪些要求?(除了 std::hash 的专门化)
c++ - 比较两个无序集的相等性有多昂贵?
给定两个std::set
s,可以简单地同时遍历两个集合并比较元素,从而产生线性复杂度。这对 s 不起作用std::unordered_set
,因为元素可以按任何顺序存储。a == b
那么到底有多贵std::unordered_set
呢?
c++ - 使用擦除(开始())从 unordered_set 中“删除一个元素”在 gcc 中很慢
我想要一个从 unordered_set 中“删除一个元素”的功能。
但是,当它使用erase(begin()) 实现时,它变得非常慢。(这是在 g++-4.5.3 中;也许 begin() 必须遍历更多的空哈希桶?)
请参阅下面的示例代码,其中包含令人惊讶的时间。
是否有其他方法可以实现效率更高的“删除一个元素”?(我确实希望允许其他使迭代器无效的干预集合操作。)
c++ - unordered_set 与 boost 和 standard 的区别
我正在尝试将来自 boost 和标准的 unordered_set 用于应用程序,目的是找到位置,即该集合中某些元素的索引。结果之间存在细微差别。根据这个简单的程序,对 boost 中的元素进行了反转。问题出在哪里?
简单的“假设”代码:
有了提升,我得到了
并使用标准的 unordered_set 我得到
我编译两者
c++ - 在 C++ 中为 unordered_set 声明哈希函数?
对于一个相当大的项目,我必须使用 unordered_set,为了确保我正确使用它,我尝试了一个小例子。
当我编译时,我得到:
似乎它没有看到我的哈希函数,但我认为“哈希”是默认函数名称。我是否正确定义了哈希?还是我需要显式声明一个单独的哈希类作为第二个模板参数?
c++ - 为什么 unordered_set 操作(如 count 和 erase)会返回 size_type?
显然,unordered_set::erase
并unordered_set::count
返回一些不是严格布尔值的东西(从逻辑上讲,我不是在谈论实际类型)。
链接页面读取第三版擦除:
删除具有键值键的元素
这有一种语气,表明给定键的元素可能不止一个。它没有明确说明这一点,但听起来很像。
现在,集合的要点,即使是无序的集合,也是每个元素都有一次。
标准库承认该bool
类型的存在并将其用于布尔值,如unordered_set::empty()
. 那么,size_type
在上述情况下,返回有什么意义呢?即使存在哈希冲突,容器也应该区分具有不同键的元素,对吧?我还能依靠吗?
c++ - map 或 hashmap 用于有效查找通用字符串?
我需要能够存储和查找通用字符串。我对字符串的内容不太了解,2/3 多一点是人类语言单词,其余的则更接近 UUID 或数字/字母组合。我知道任何特定的分组都是不变的(即,如果它有一些人类词,它将是所有人类词,如果它有一些 UUID,则所有内容都是 UUID 等)。
我需要决定是否应该将这些数据放在地图或哈希图中以获得最佳平均查找率。我倾向于使用 O(log n) 运行时说 map,因为当我对字符串的输入格式知之甚少时,我不相信我可以为字符串进行适当的有效散列。关于哪个会更好的任何想法?
编辑:我忘记了一个关键方面。我不知道字符串的长度,因此担心长字符串的内存使用量可能会增长过大。如果我使用散列方法,我会做一些事情,在 X 个字符之后,散列不会在每个字符的基础上散列,以避免内存消耗太大。
我真正想要的是一个哈希映射实现,它将“桶”中的多个值按有序的manaer排序,因此它可以提供桶的(log N)搜索;但我不认为 Stardrd C++ 中存在它,也不值得从头开始编写。
pps。数据接近静态。我偶尔会不得不将它添加到列表中,这很罕见,我愿意接受缓慢的写入时间。我只关心查找时间。