簡體   English   中英

在建築上儲備的標准容器?

[英]Standard containers that reserve on construction?

我想要一個標准的C ++容器用作從網絡套接字讀取的累加器(即T = byteunsigned char )。 我希望容器在構造時保留容量,而不是初始化元素。 也就是說,我希望能夠做到:

container c(1024);

並讓容器保留1024個八位字節。 一步結構/容量很重要,因為我想在初始化器中使用它。

我也想要連續存儲。 如果容器必須生長,則新存儲應該是連續的。

我還希望能夠append字節append到容器中。 我希望能夠在容器中搜索字節字符串。

vectorstring並不真正適合,因為構造和保留是兩步過程,它們使用額外的分配,並且它們初始化元素。 另外, vector缺少搜索功能。 編輯vector很好,多虧了<algorithm> ;感謝軌道上的DYP和Lightness Races)。

是否有任何具有這些屬性的C ++標准容器?

你問的是錯誤的問題。

標准庫不為每個用途提供容器,而是提供一系列有用的建築用磚

如果你想要連續的存儲,那么你應該使用std::vector並考慮使它符合你的其他要求:

  • 通過為分配器提供no-op construct方法來完成非初始化
  • 並且通過使用std::search或滾動您自己的特定搜索算法來完成搜索模式(Knuth Morris Pratt,Boyer Moore,...)

無論如何,我建議將vector封裝到一個具有明確語義角色的專用類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM