问题标签 [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++ - 提升无序集不起作用
我是新手。我正在尝试实现 boost::unorder_set。这是代码:
我收到以下错误:
我的实施有什么问题?提前谢谢。
c++ - Unordered_set 问题
谁能解释一下无序集是如何工作的?我也不确定一组是如何工作的。我的主要问题是它的查找功能的效率是多少。
例如,这个总的大 O 运行时间是多少?
boost - boost/unordered_set: 使用 mingw () 编译错误
我有一段使用 boost 的 unordered_set 的代码
它可以在 unix 下与 gcc 一起编译并正常工作。当我尝试使用 mingw32 (gmake 3.8.1) 进行交叉编译时,我收到以下消息:
对我来说,这似乎是一个与模板相关的问题;有什么建议么?
谢谢你,马蒂亚
[编辑]
其他增强功能可用,例如词法转换
boost - C++:shared_ptr 作为 unordered_set 的键
考虑以下代码
问题是:为什么 s2 的大小是 2 而不是 1?我很确定它一定与哈希函数有关。我尝试查看 boost 文档并在没有运气的情况下使用散列函数。
想法?
performance - 无序集(const char)比无序集(字符串)慢得多
我正在将一个很长的列表从磁盘加载到 unordered_set 中。如果我使用一组字符串,它会非常快。大约 7 MB 的测试列表在大约 1 秒内加载。但是,使用一组 char 指针大约需要 2.1 分钟!
这是字符串版本的代码:
这是 char* 版本的代码:
“new(mem)”是因为我使用了自定义内存管理器,所以我可以分配大块内存并将它们分配给像 c 字符串这样的小对象。但是,我已经用常规的“新”测试了它,结果是相同的。我还在其他工具中使用了我的内存管理器,没有任何问题。
这两个结构是根据实际的 c 字符串而不是其地址进行插入和查找哈希所必需的。我实际上在堆栈溢出时在这里找到了 unordered_deref。
最终我需要加载数千兆字节的文件。这就是我使用自定义内存管理器的原因,但这也是为什么这种可怕的减速是不可接受的。有任何想法吗?
c++ - size_t:运营商?(以及一种使用 unordered_set 的方法)
什么是
环境:Visual Studio 2010 Professional
TL; 博士
今天我正在寻找一种使用std::tr1::unordered_set
. 因为上次问了怎么用,所以决定自己去查一下。std::map
我用谷歌搜索,大部分结果告诉我有一个结构来做散列。这条路对我来说看起来有点复杂,我一直在寻找,终于找到了另一种方法。
我需要实施
和
生成的代码接近问题的结尾。
==
熟悉没有任何问题。size_t
也很熟悉。但什么是operator size_t
?
似乎equals
和hashCode
Java 一样,需要根据 Effective Java 一起重写。但我不确定,尤其是当名字是size_t
.
结果代码如下。完整的程序运行良好,并产生正确的输出。
多一点点:
不是
无法编译:
即使没有
但正如我所见,函数返回int
. 错误代码如下:
c++ - unordered_map / unordered_set 中元组的通用哈希
为什么不std::unordered_map<tuple<int, int>, string>
开箱即用?必须为 定义一个散列函数是很乏味的tuple<int, int>
,例如
构建一个以元组为键的无序映射(Matthieu M.) 展示了如何为boost::tuple
. 有没有在不使用可变参数模板的情况下为 c++0x 元组执行此操作?
当然这应该是标准:(
c++ - boost::unordered_map -- 需要为散列 std::set 指定一个自定义散列函数?
我想使用boost::unordered_map<key,value>
,key
a在哪里std::set<int>
。由于一组整数不是内置类型,我假设我必须提供我自己的哈希函数(或者,更确切地说,我正在考虑使用boost 的 hash_range)。
但是,现在我尝试像这样初始化哈希映射,既不提供哈希函数也不提供相等谓词——gcc 没有抱怨。这里发生了什么?boost 是否足够聪明,可以自己散列 STL 容器?这会比我使用自定义哈希函数慢吗?怎么用boost::hash_range
?
提前致谢。
c++ - 将元素存储在 unordered_set 中与将它们存储在 unordered_map 中
假设我有以下用户结构:
我需要存储一组用户记录(大约 10^5 个用户,也可以扩大规模)。如果我将其存储为 unordered_set 或 unordered_map,性能会更好吗?Unordered_set 在技术上与 HashSet 相同,unordered_map 与 HashMap 相同,对吧?使用常规集合(有序)不是一个选项,因为当元素数量增加时插入和删除会变得非常慢。
或者
我需要它在插入、删除和通过其 userId 访问特定用户对象方面非常快。
c++ - 获取 unordered_set 中最右边的元素(或反向打印内容)
我有一个 unordered_set 如下:
然后我执行了另一个函数,它删除了 unordered_set 中大约 85% 的元素。(要删除的元素取决于此函数的逻辑,但这并不重要,因为所有元素最初都是按顺序插入的)。
现在,在擦除 unordered_set 中的一些元素之后,我想打印仍然保留在该 unordered_set 中的最后一个元素。比如元素 9997、9998、9999 和 10000 已被擦除,所以这个集合中剩余的最大元素是 9996。如何做到这一点?
如果使用基本套装,我可以执行以下操作:
在一个集合中,我们有 reverse_iterator 和 rbegin(),但这在 unordered_set 中不存在。我之所以没有基本设置是因为我需要将元素大小放大到 10^8。使用常规集(基于红黑树)确实会降低性能(尤其是在处理插入和删除时)。我怎样才能做到这一点?将最后剩余的 unordered_set 复制到向量中会起作用,但这当然需要时间。我怎样才能通过使用更智能的方式来实现这一目标?我注意到我也不能做类似的事情: