我知道几个(所有?)STL实现实现了一个"小字符串"优化,而不是存储开始,结束和容量的通常3个指针,如果sizeof(字符),字符串将实际字符数据存储在用于指针的内存中<= sizeof(指针).我处于一种情况,我有很多小矢量,元素大小<= sizeof(指针).我不能使用固定大小的数组,因为向量需要能够动态调整大小并且可能会变得非常大.但是,矢量的中值(非平均)大小仅为4-12个字节.所以适应矢量的"小字符串"优化对我来说非常有用.这样的事情存在吗?
我正在考虑通过简单的蛮力将矢量转换为字符串,即为字符串提供矢量接口.好主意?
Boost 1.58刚刚发布,它的Container
库有一个基于LLVM 的small_vector类SmallVector
.
还有一种static_vector
不能超过最初给定尺寸的产品.两个容器都是标题.
facebook的愚蠢图书馆也有一些很棒的容器.
它有一个small_vector
可以配置模板参数的功能,如boost static
或small
矢量.它也可以配置为使用小整数类型为它的内部大小簿记,因为它们是facebook并不奇怪:)
有一些工作正在进行,以使图书馆跨平台,所以Windows/MSVC支持有一天应该降落......
您可以从LLVM 借用SmallVector实现.(仅限标题,位于LLVM\include\llvm\ADT中)