gpt4 book ai didi

c++ - 施工时预留的标准容器?

转载 作者:太空狗 更新时间:2023-10-29 21:00:43 26 4
gpt4 key购买 nike

我想要一个标准的 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 封装到一个具有明确语义角色的专用类中。

关于c++ - 施工时预留的标准容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com