问题标签 [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++ - 在 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 。
c++ - 如何使用 unordered_set?
我正在尝试像这样定义一个 unordered_set:
当我编译它时,我收到以下错误:
C++ 标准不提供这种类型的散列。
类Point
:
- 如何/在哪里为Point定义哈希函数?
- 对于 2D 点,什么是好的散列函数?
hash - 为什么 hastable 的 rehash 复杂度在最坏的情况下可能是二次的
我不明白为什么 hastable 的 rehash 复杂性在最坏的情况下可能是二次的:
http://www.cplusplus.com/reference/unordered_set/unordered_multiset/reserve/
任何帮助,将不胜感激 !
谢谢
c++ - 是否可以通过桶迭代器从 std::unordered_set 中删除元素?
std::unordered_set
就像问题说的那样,您可以使用存储桶迭代器 ( local_iterator
)从 a 中删除一个元素吗?我可以看到两种可能的解决方案:
- 由于 erase() 只接受 global
iterator
s,是否有等效的功能local_iterator
? - 是否有可能获得等效的全局
iterator
alocal_iterator
?
如果不可行,请详细说明为什么不可行。
c++ - 散列 unordered_set 的自定义指针类型
我正在尝试散列一个 Edge 结构,以便我可以拥有一个具有唯一边缘的 unordered_set。在我的情况下,如果在之前的集合中没有遇到它的两个端点的组合,则认为一条边是唯一的。
虽然我的代码适用于仅包含 Edge 类型的 unordered_set,但我无法让它适用于指向 Edge 类型的指针。请在下面查看我有些冗长的代码。非常感谢任何帮助。
这是输出:
所以我的问题是:为什么将第二个元素添加到第二个表中?我检查了哈希函数,但它为两个条目返回相同的键,所以这似乎不是罪魁祸首,但我不确定它可能是什么。
编辑:
我现在发现inline bool operator==(const Edge* other) const
没有调用,但我不知道为什么。
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
姓名:
c++ - unordered_set 按地址传递
我已经从 C 转向 C++,最近还在学习 STL。
最后一行在 STL 样式中给出了相当长的错误(无能为力)或者我可能是模板的新手,这就是我觉得它无助的原因。
森林是:
编辑:按照建议的答案之一尝试后
它仍然给出相同的错误。
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.
c++ - 自定义无序集散列函数
我第一次为我的数据结构类使用无序集。当我尝试在我们学校的服务器上运行此代码时,它告诉我它的架构错误。这是我的主要代码(RAJ.cpp):
这是我在使用 g++ 成功编译后尝试运行时收到的主要错误:
应该注意的是,当模板化为整数类型时,相同的代码可以正常工作