在施工时预留的标准集装箱?

Standard containers that reserve on construction?

本文关键字:标准 集装箱 施工时      更新时间:2023-10-16

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

container c(1024);

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

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

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

vectorstring并不真正合适,因为构建和储备是两步过程,它们使用额外的分配,并初始化元素。另外,vector缺少搜索功能。(编辑vector很好,感谢<algorithm>;感谢DYP和Lightness Races in Orbit)。

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

你问错了问题。

标准库没有为每种用途提供容器,而是提供了一系列有用的建筑砖

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

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

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