我希望标准C ++容器用作累加器,以便从网络套接字(即T = byte
或unsigned char
)进行读取。我希望容器在构造时保留容量,而不初始化元素。也就是说,我希望能够做到:
container c(1024);
并让容器保留1024个八位字节。一步结构/容量很重要,因为我想在初始化器中使用它。
我也想要连续存储。如果容器必须增长,新存储应该是连续的。
我还希望能够append
个字节到容器。我希望能够在容器中搜索字节字符串。
vector
和string
不太合适,因为构造和保留是两个步骤,它们使用额外的分配,并且它们初始化元素。另外,vector
缺少搜索功能。 (编辑:vector
很好,感谢<algorithm>
;感谢眼眶中的DYP和轻盈种族。)
是否有任何具有属性的C ++标准容器?
答案 0 :(得分:4)
你问的是错误的问题。
标准库不为每个用途提供容器,而是提供一系列有用的构建砖。
如果您想要连续存储,那么您应该使用std::vector
并考虑使其符合您的其他要求:
construct
方法std::search
或滚动您自己的特定搜索算法(Knuth Morris Pratt,Boyer Moore,...)来完成的。无论如何,我建议将vector
封装到一个具有明确语义角色的专用类中。