+ -
当前位置:首页 → 问答吧 → 一个数据结构的问题

一个数据结构的问题

时间:2011-09-10

来源:互联网

如果有一个结构体
struct X
{
  string a;
  string b;
  int c;
  double d;
}
里面有各种数据。现有一个较大的此类结构数据集(10万吧),查询可能以a(或者b,或者c都有可能)为key来查找对应结构体,有什么好的方法实现?(除了建各种map,比如map(a, X)、map(b,X))
有没有空间和效率同样好的算法呢?

作者: wooMap   发布时间: 2011-09-10

哈希表试试!

作者: wxwlll   发布时间: 2011-09-10

C/C++ code
struct X
{
  string a;
  string b;
  int c;
  double d;
}

定义一个 hash 函数 记 y = f(a) 为结构体 中的String a;
hash 函数 能对每一个数据产生唯一的值。
开辟一个length 足够大的数组 struct X array[length] ,以 f(a) 为 数组 array下标,即 array[f(a)]; 
struct x1; x1为任意的struct x 变量
array[f(x1.a)] = x1;
然后通过 f(a) 来查询

作者: Yuerzm   发布时间: 2011-09-10

引用 2 楼 yuerzm 的回复:

C/C++ code
struct X
{
string a;
string b;
int c;
double d;
}

定义一个 hash 函数 记 y = f(a) 为结构体 中的String a;
hash 函数 能对每一个数据产生唯一的值。
开辟一个length 足够大的数组 struct X array[length] ,以 f(a) 为 数组 array下标……


这个只是解决了如何用成员a来查找,并且这个和map貌似区别不大吧?只是map多存储了a作为key。
如果是用b来查找呢?还只能是线性的O(n)?

作者: wooMap   发布时间: 2011-09-10