问题标签 [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 投票
1 回答
8638 浏览

c++ - 在 Visual C++ 和 clang 中使用 C++11 unordered_set

我正在尝试在跨平台 C++ 应用程序中使用 std::unordered_set 。它在 Windows 下编译和工作就像在 Visual C++ 中的魅力一样,但在 Mac OS X 下的 clang 上会产生致命的编译错误。

我想知道它为什么会发生,以及什么是让它工作的正确方法。

示例代码:

叮当输出:

使用@mfontanini 的建议进行UPD工作实施: https ://gist.github.com/vbo/6090142 。

0 投票
1 回答
38680 浏览

c++ - 如何使用 unordered_set?

我正在尝试像这样定义一个 unordered_set:

当我编译它时,我收到以下错误:

C++ 标准不提供这种类型的散列。

Point

  • 如何/在哪里为Point定义哈希函数?
  • 对于 2D 点,什么是好的散列函数?
0 投票
1 回答
2835 浏览

hash - 为什么 hastable 的 rehash 复杂度在最坏的情况下可能是二次的

我不明白为什么 hastable 的 rehash 复杂性在最坏的情况下可能是二次的:

http://www.cplusplus.com/reference/unordered_set/unordered_multiset/reserve/

任何帮助,将不胜感激 !

谢谢

0 投票
1 回答
722 浏览

c++ - 是否可以通过桶迭代器从 std::unordered_set 中删除元素?

std::unordered_set就像问题说的那样,您可以使用存储桶迭代器 ( local_iterator)从 a 中删除一个元素吗?我可以看到两种可能的解决方案:

  • 由于 erase() 只接受 global iterators,是否有等效的功能local_iterator
  • 是否有可能获得等效的全局iteratora local_iterator

如果不可行,请详细说明为什么不可行。

0 投票
2 回答
1865 浏览

c++ - 散列 unordered_set 的自定义指针类型

我正在尝试散列一个 Edge 结构,以便我可以拥有一个具有唯一边缘的 unordered_set。在我的情况下,如果在之前的集合中没有遇到它的两个端点的组合,则认为一条边是唯一的。

虽然我的代码适用于仅包含 Edge 类型的 unordered_set,但我无法让它适用于指向 Edge 类型的指针。请在下面查看我有些冗长的代码。非常感谢任何帮助。

这是输出:

所以我的问题是:为什么将第二个元素添加到第二个表中?我检查了哈希函数,但它为两个条目返回相同的键,所以这似乎不是罪魁祸首,但我不确定它可能是什么。

编辑:

我现在发现inline bool operator==(const Edge* other) const没有调用,但我不知道为什么。

0 投票
5 回答
5540 浏览

c++ - unordered_set 非常量迭代器

出于测试目的,我创建了一个小 unordered_set 并尝试迭代该集合。该集合包含一个自己的类:

我插入了一些元素并尝试在迭代期间更改对象:

我使用了 local_iterator(而不是 const_local_iterator),但我仍然无法更改对象。由于某些原因,迭代器仍然指向一个常量对象。

我现在的问题是:为什么会这样?如果普通迭代器引用一个 const 对象,那么 const 和非 const 迭代器有什么区别?

使用 VisualStudio 2013 和 minGW 测试。

提前感谢您的帮助:-)

编辑:哈希函子:

对于将来有相同问题的该主题的发现者,如果您将 matrNr 更改为暴力,以下是一些示例输出:

并尝试显示它:

你可能会得到类似的东西:

桶号:0

一个空桶

桶数:1

Matrikelnummer: 5

姓名:威尔玛

桶数:2

一个空桶

桶数:3

一个空桶

桶数:4

Matrikelnummer: 5

姓名:弗雷德

桶数:5

一个空桶

桶数:6

Matrikelnummer: 5

姓名:巴尼

桶数:7

一个空桶

//不想要的输出;-)

Matrikel 号码:-842150451

姓名:

0 投票
1 回答
228 浏览

c++ - unordered_set 按地址传递

我已经从 C 转向 C++,最近还在学习 STL。

最后一行在 STL 样式中给出了相当长的错误(无能为力)或者我可能是模板的新手,这就是我觉得它无助的原因。

森林是:

编辑:按照建议的答案之一尝试后

它仍然给出相同的错误。

0 投票
2 回答
10576 浏览

c++ - 如何使用具有成对向量元素的 unordered_set

我想要类似的东西

但即使没有配对:

它失败:

http://ideone.com/wusr5V

0 投票
2 回答
4512 浏览

c++ - unordered_set: invalid operands to binary expression ('const Play' and 'const Play')

I'm getting this error when I try to insert an element into an unordered_set:

Here's a screenshot of the whole error: https://www.dropbox.com/s/nxq5skjm5mvzav3/Screenshot%202013-11-21%2020.11.24.png

This is my hash function:

This is where I declare the unordered_list:

And this is my overloaded == for my Play class:

Any idea what could be going on here?

Thanks.

0 投票
1 回答
239 浏览

c++ - 自定义无序集散列函数

我第一次为我的数据结构类使用无序集。当我尝试在我们学校的服务器上运行此代码时,它告诉我它的架构错误。这是我的主要代码(RAJ.cpp):

这是我在使用 g++ 成功编译后尝试运行时收到的主要错误:

应该注意的是,当模板化为整数类型时,相同的代码可以正常工作