【发布时间】:2011-04-23 22:41:17
【问题描述】:
我有这样的课:
class Foo
{
long long Id;
string x;
string y;
// other member variables and functions
};
我想将它存储在hash_set(或hash_map)中,但使用Id 成员变量作为插入和搜索的键。我不确定我该怎么做。我想了以下几种方法,但都不是很好:
1) 我可以编写一个自定义散列函数,该函数将使用 Id 散列对象,但是我不能使用 hash_set 上的 find() 方法按 Id (long long) 查找项目,因为它将需要传入 Foo 对象。
2) 我可以复制 Id 并创建一个hash_map<long long, Foo> 而不是 hash_set<long long, Foo> 但我有 1 亿个这些对象的实例,所以我宁愿不复制 Id 字段。
3) 我可以将 Id 字段移到 Foo 之外,然后执行 hash_map<long long, Foo>,但这会有点混乱,因为 Id 是由班级内部使用的,最好将其保留在 @987654332 @。
有什么想法吗?我正在寻找的是一种存储 Foo 对象但能够使用 long long (按 ID)在 hash_set 中搜索它们的方法。
谢谢!
【问题讨论】:
-
这个的使用模式是什么?您是设置一次然后只读取它还是继续修改设置?