我有一个系统将 void* 返回到内存块。该内存块存储不同类型(int、char、double 等)的连续数据记录,并给出每个记录中每个字段的字节数。我本质上是查找记录的类型并获取记录的值。要检索所有记录,我这样做
switch(type)
{
case 'int' : \*(int*)(ptr+index)
case 'char': \*(char*)(ptr+index)
}
当我必须浏览 300000 条记录时,这会花费大量时间。是否有更快的方法来浏览所有记录?
最佳答案
如果单个 block 可以是只能在运行时解析的多种类型,则必须在 switch
语句中分派(dispatch)到处理程序。请注意:
union
通常在 C 中使用,以节省空间switch
语句非常快,并且转换为恒定时间查找表
关于c++ - 快速检索 (void *) 内存块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718162/