在建筑上储备的标准容器?

时间:2014-01-19 13:47:46

标签: c++ stl containers

我希望标准C ++容器用作累加器,以便从网络套接字(即T = byteunsigned char)进行读取。我希望容器在构造时保留容量,而初始化元素。也就是说,我希望能够做到:

container c(1024);

并让容器保留1024个八位字节。一步结构/容量很重要,因为我想在初始化器中使用它。

我也想要连续存储。如果容器必须增长,新存储应该是连续的。

我还希望能够append个字节到容器。我希望能够在容器中搜索字节字符串。

vectorstring不太合适,因为构造和保留是两个步骤,它们使用额外的分配,并且它们初始化元素。另外,vector缺少搜索功能。 (编辑vector很好,感谢<algorithm>;感谢眼眶中的DYP和轻盈种族。)

是否有任何具有属性的C ++标准容器?

1 个答案:

答案 0 :(得分:4)

你问的是错误的问题。

标准库不为每个用途提供容器,而是提供一系列有用的构建砖

如果您想要连续存储,那么您应该使用std::vector并考虑使其符合您的其他要求:

  • 非初始化是通过为分配器提供no-op construct方法
  • 来完成的
  • 搜索模式是通过使用std::search或滚动您自己的特定搜索算法(Knuth Morris Pratt,Boyer Moore,...)来完成的。

无论如何,我建议将vector封装到一个具有明确语义角色的专用类中。