如何为文件建立索引

Henry8484 2010-04-03 02:55:19
我有一个文件,里面有多种不同的记录,但是每种记录都有唯一的ID号,(如 10张山 11小李 10张山 11小李)
我想一次性读取出来,然后为每种记录做一个索引,访问的时候不再重新读取文件,直接访问内存就行了,
请高手指点一下怎么做哦~
...全文
454 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Henry8484 2010-04-13
  • 打赏
  • 举报
回复
结构体如下:
typedef struct _OEVT
{
long lCount;
long field;
bool ModifyFlag;
long *pOEvt
}*LPOEVT,OEVT;
全局声明:LPOEVT m_pOEvt[256][6];
在使用时分配空间:
m_pOEvt[10][0]->pOEvt=new long[count];
m_pOEvt[20][0]->pOEvt=new long[1000];


为什么在我分配空间的时候报错啊,好像是指针错误,请教这个问题怎么解决?
Henry8484 2010-04-08
  • 打赏
  • 举报
回复
自己顶一下~~~
Henry8484 2010-04-08
  • 打赏
  • 举报
回复
我的文件记录包含多个long型的Flag,相同的FLAG里面又含有多条不同的数据(假如如ID,成绩)等,然后我想在read文件的时候,一次读取出来,并且可以像树形结构那样排好序,排序的时候,记录 的位置不变化,只改变索引,然后当我要get_id(flag,(排序的条件:ID OR 成绩),INDEX(第几条记录)),不用再遍历整个文件,从而提高效率,请问要怎么样实现呢??
ls2141 2010-04-08
  • 打赏
  • 举报
回复
感觉你不知道怎么做了嘛 用链表存储你的结构体就行了!至于链表map vector 都可以
Henry8484 2010-04-08
  • 打赏
  • 举报
回复
文件格式的确是一个结构体~~~
向立天 2010-04-08
  • 打赏
  • 举报
回复
既然结构是一样的
可以用结构体处理
记录是定长的么?
Henry8484 2010-04-03
  • 打赏
  • 举报
回复
虽然是多种记录,但这些记录的结构都是一样的,全部读取的时候也是按照结构体的形式来读的,但是能否详细的说下怎么建立索引?才能使查找记录的过程中效率最高
zxdyu2009 2010-04-03
  • 打赏
  • 举报
回复
你把文件中的内容读取出来,用一个map把她们存起来。
就这样的:

Class CContents;//or Struct CContents
这个是存放内容的
map<int,CContents>m_Map;//关键字是唯一的ID号,后面的CContents是存放相应ID对应的内容。
再要找对应ID的时候,直接用m_Map查找 。
lmxmx 2010-04-03
  • 打赏
  • 举报
回复
可以用链表试试看呗,
将记录按照ID挂在链表上,使用的时候从第一个开始的查询。

如果记录非常多,链表的查询效率会降低,那么可以试着使用B树。
不过实现B树的算法使用起来太麻烦了……

多种不同的记录,可以用不同的结构体实现,
链表中只记录结构体的地址,而不使用结构体,就可以实现在一个链表中挂多种记录了。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧