【发布时间】:2016-11-27 23:43:51
【问题描述】:
如何将类的对象存储在unordered_set 中?我的程序需要经常检查 unordered_set 中是否存在对象,如果存在,则对该对象进行一些更新。
我在网上查找了如何使用unordered_set,但遗憾的是大多数教程都是关于在int 或string 类型上使用它。但是我怎样才能在课堂上使用它呢?如何定义哈希函数以使以下示例中的node_id 成为unordered_set 的键?
#include <iostream>
#include <unordered_set>
using namespace std;
// How can I define a hash function that makes 'node' use 'node_id' as key?
struct node
{
string node_id;
double value;
node(string id, double val) : node_id(id), value(val) {}
};
int main()
{
unordered_set<node> set;
set.insert(node("1001", 100));
if(set.find("1001") != set.end()) cout << "1001 found" << endl;
}
【问题讨论】:
-
看起来你需要一张地图而不是一组。
-
我实际上是在使用地图。但它读到无序集的查找复杂度为 O(1)
-
@daydayup
unordered_map也是如此。 -
一个警告:您说您正在查找对象以更改它。如果此更改影响密钥,您将需要删除旧密钥并重新插入新密钥。
标签: c++ unordered-set hash-function