Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;数据块管理_C++ - Fatal编程技术网

C++ C++;数据块管理

C++ C++;数据块管理,c++,C++,(在这里很难找到一个好的问题标题!) 在过去的几个月里,我似乎一直在为同样的任务编写代码(在一些小的变化中)。所以我想知道C++标准库(或者Boost)中是否有什么可以帮助的。让我试着解释一下我想做什么 作为一个具体的例子,假设我有一个逻辑文件,它由磁盘上的几个物理文件组成。我想做的是写一个函数,比如 void ReadData(void * buffer, UInt64 offset, UInt64 size); 看起来很简单,对吧?然而,它实际上相当微妙: 首先,我需要找出哪个物理文件包

(在这里很难找到一个好的问题标题!)

在过去的几个月里,我似乎一直在为同样的任务编写代码(在一些小的变化中)。所以我想知道C++标准库(或者Boost)中是否有什么可以帮助的。让我试着解释一下我想做什么

作为一个具体的例子,假设我有一个逻辑文件,它由磁盘上的几个物理文件组成。我想做的是写一个函数,比如

void ReadData(void * buffer, UInt64 offset, UInt64 size);
看起来很简单,对吧?然而,它实际上相当微妙:

  • 首先,我需要找出哪个物理文件包含请求的逻辑偏移量
  • 接下来,我需要检查请求的
    size
    是否跨越物理文件边界
  • 实际上,在最坏的情况下,
    size
    可能跨越多个文件,尽管这不太可能
  • 最后,我需要
    fread()
  • 检查
    偏移量
    大小
    是否超过可用数据也是谨慎的
所有这些都不是令人惊讶的困难,只是很容易搞糟。有无限的机会进行逐个bug、越界访问等等。彻底测试也很尴尬。简言之,这不是那种你想要反复编写的代码


有人知道图书馆里有什么能帮我的吗?我最感兴趣的是处理所有坐标变换的东西,而不是实际的I/O操作本身。

B+树和B+树索引文件?