问题标签 [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.

0 投票
4 回答
1952 浏览

c++ - 如何在迭代时有效地替换 unordered_set 中的元素?

假设你有一个

并且您想在迭代它时替换它的一些元素:

这可能会使迭代器在eraseand处无效insert(如果发生重新散列),因此此循环将表现出未定义的行为,并且很可能会严重崩溃。

我能想到的一种解决方案是使用两个单独vector的 s 来缓冲insertanderase操作,然后使用采用迭代器对进行擦除和插入的重载(这可能对重新散列更友好)。

即使我使用缓冲区方法,这仍然看起来是臃肿的代码,并且可能导致两次重新散列,这可能都是不必要的。

那么,有没有更好的方法呢?

0 投票
4 回答
10084 浏览

c++ - O(1) 中 unordered_set 中的随机元素

我见过有人提到可以在 O(1) 时间内从 unordered_set 中获取随机元素。我试图这样做:

但是,unordered_set 迭代器不支持带整数的 +。 begin可以给定一个 size_t 参数,但它是一个桶的索引而不是一个元素。随机挑选一个桶然后随机挑选其中的一个元素将导致非常不平衡的随机分布。

正确的 O(1) 随机访问的秘诀是什么?如果重要的话,这是在 VC++ 2010 中。

0 投票
1 回答
645 浏览

visual-studio-2010 - VC10 unordered_set/map 移动构造函数错误?

似乎 VC10 (Visual Studio 2010) 下 unordered_set/map 的移动构造函数在被调用后将右侧置于未定义状态,导致其他操作(如“插入”)惨遭失败。移动赋值运算符似乎工作正常。不过,正常的集合/映射似乎在所有情况下都表现正确。此外,在 VC11 (Visual Studio 2012) 下一切似乎都运行良好。

这是 VC10 下 _Hash 实现的错误还是我遗漏了什么?提前感谢您的任何投入!

0 投票
2 回答
32800 浏览

c++ - 将向量的元素添加到无序集合

有没有一种简单的方法可以将 a 的所有元素添加vector到 a unordered_set?它们属于同一类型。现在,我正在使用 for 循环,想知道是否有更好的方法来做到这一点

0 投票
1 回答
184 浏览

c++ - std::unordered_multiset 中的桶

假设我有一个std::unordered_multiset<int>which is namedhashTable和一个 bucket i。我可以遍历ith 桶的元素吗?

0 投票
2 回答
10644 浏览

c++ - 自定义类的 unordered_set 是否有默认哈希函数?

std::unordered_set第一次使用 a 并且对哈希函数有疑问。据我了解,如果您不指定哈希函数,它将默认为std::hash<Key>.

我的mySet一个班级中有一名成员:

当我尝试构建时,我收到以下错误:

错误 C2440:“类型转换”:无法从“const MyClass”转换为“size_t”

size_t如果要unordered_set与自定义类一起使用,是否需要定义转换函数 (to )?有没有办法避免编写自己的哈希函数而只使用默认值?

0 投票
2 回答
694 浏览

c++ - unordered_set c++

我注意到,当我使用无序集unordered_set<int> theSet;来保存大量整数时,即使调用 clear() 或 rehash(0),它也不会释放内存。即使我在函数中本地定义了集合,并且函数执行完毕,集合保留的大部分内存仍然保留。有任何想法吗?

下面是一个示例代码,当 tester 函数返回并且我们在 main 中时,tester 使用的内存没有被释放

谢谢

0 投票
4 回答
8722 浏览

c++ - 如何制作 std::weak_ptr 的 c++11 std::unordered_set

我有一套这样的:set<weak_ptr<Node>, owner_less<weak_ptr<Node> > > setName;

它工作正常。但我想将其更改为无序集。但是,当我这样做时,我得到了大约六页的错误。任何想法如何做到这一点?

在浏览了所有错误消息页面后,我发现可能有帮助的行。

0 投票
2 回答
250 浏览

c++ - boost lib,用 c++ 设置的无序集让我头疼

好的,我知道这可能会很容易,但我有这段代码实现了 boost 库(这是我第一次使用它),我似乎无法让它正常工作。这是代码。哈希.h

还有hash.cpp

我收到“hash.cpp:18:7: error: expected unqualified-id before '.' 令牌”。我重申,我知道这可能很容易,我只是以前没有使用过 boost 库。我在互联网上查看了许多示例,但我似乎无法让这个“简单”的作品发挥作用。谢谢。

0 投票
4 回答
4712 浏览

c++ - std::unordered_set 是否连续(如 std::vector)?

我将指针存储在 std::unordered_set 中。我这样做是因为我不想要任何重复项(我删除了集合中的指针,所以如果有重复项,我将尝试删除一个已经删除的指针)。我在这些集合中大量循环,因为我知道 std::vector 是最快的循环容器(连续内存),我想知道 std::unordered_set 是否也这样做。

如果没有,使用 std::vector 并检查指针是否已被删除会更快吗?