容器将多个内存块呈现为单个连续的内存块

iw.*_*hin 6 c++ containers memory-management

是否有一些"标准"容器(STL,boost)可以呈现多个内存块作为单个连续的容器?我需要使用以下条件的一些数据:

  • 事先不知道数据的总大小(网络响应)
  • 内存以块的形式分配(有一些外部分配功能,我无法控制)
  • 内存释放不受我控制,因此重新分配相对昂贵

因此,在获取所有数据后,我有一个内存块列表.我需要将一些STL算法(搜索,复制等)作为一个整体应用于数据.有一个解决方案来写容器来保存有关这些块+前进迭代器的信息,它可以从一个块"跳转"到另一个块.

但问题似乎相当普遍,所以我希望有一些我不知道的着名答案.提前致谢.

MSa*_*ers 4

你说,记忆是提供给你的。听起来您不想复制它。没问题,STL 哲学非常灵活。你实际上并不需要一个容器;它们只是用于内存管理,并且已经得到处理。

需要的是一个迭代器。没有标准;你必须自己写一个。有太多细微的变化,无法为此提供标准解决方案。但不用担心,这相当容易。如果您继承自 ,您将获得必要的 typedef std::iterator<value_type>,因此您只需要编写operator*(直接)和operator++// operator--/ (理解块)operator+operator-