是否有任何已知的类似 STL 的标头容器/分配器,用于将内存块附加到另一个连续的内存区域,直到它被填满?目前我正在使用 a std::vector<char> vec
,因为它有一些有用的界面,但它不是最佳的,不知何故我认为我正在滥用它来满足我的需要。
我首先使用std::vector::reserve
固定其容量并一次性分配所需的内存以避免不必要的重新分配,然后std::copy(&chunk[0], &chunk[size], vec.data() + vec.size())
每次都使用将新的内存块附加到unfilled
向量后面的内存区域(当然size() <= capacity()
)。每次复制后,我都会相应地显式更新向量的大小。好的,我可以使用 back_inserter。但这不是现在的重点(见下文)。
当然std::copy
可以char
由任何实现专门化,以便它可以memcpy
在最后调用,但这不是保证。自己调用memcpy
将块附加到向量已经分配的内存中以获得这样的保证只是丑陋的。有更好/更优雅的选择吗?
编辑:我无法控制内存块的分配方式。他们被给予。