c++ - 快速检索 (void *) 内存块

标签 c++ c

我有一个系统将 void* 返回到内存块。该内存块存储不同类型(int、char、double 等)的连续数据记录,并给出每个记录中每个字段的字节数。我本质上是查找记录的类型并获取记录的值。要检索所有记录,我这样做

switch(type)

{

   case 'int' : \*(int*)(ptr+index)

   case 'char': \*(char*)(ptr+index)

}

当我必须浏览 300000 条记录时,这会花费大量时间。是否有更快的方法来浏览所有记录?

最佳答案

如果单个 block 可以是只能在运行时解析的多种类型,则必须在 switch 语句中分派(dispatch)到处理程序。请注意:

  1. union通常在 C 中使用,以节省空间
  2. switch 语句非常快,并且转换为恒定时间查找表

关于c++ - 快速检索 (void *) 内存块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718162/

相关文章:

c - C中的字符串连接

c - C 中未调用的函数

c - 如何用C语言创建一个可以实现向上箭头历史捕获的shell?

c++ - 接下来的两个片段有什么区别?

C++ 从字符串中删除字符

c++ - 如何在Qt中的MouseReleaseEvent中获取释放的按钮

c - gets() 没有按预期工作

c++ - 当我写入超出数组末尾时,为什么不会出现段错误?

java - 如何在 Java 代码中保留 C++ 对象?可能的?

c - 使用相同的函数来验证 2 个不同的问题