[英]Standard containers that reserve on construction?
我想要一個標准的C ++容器用作從網絡套接字讀取的累加器(即T = byte
或unsigned char
)。 我希望容器在構造時保留容量,而不是初始化元素。 也就是說,我希望能夠做到:
container c(1024);
並讓容器保留1024個八位字節。 一步結構/容量很重要,因為我想在初始化器中使用它。
我也想要連續存儲。 如果容器必須生長,則新存儲應該是連續的。
我還希望能夠append
字節append
到容器中。 我希望能夠在容器中搜索字節字符串。
vector
和string
並不真正適合,因為構造和保留是兩步過程,它們使用額外的分配,並且它們初始化元素。 另外, vector
缺少搜索功能。 ( 編輯 : vector
很好,多虧了<algorithm>
;感謝軌道上的DYP和Lightness Races)。
是否有任何具有這些屬性的C ++標准容器?
你問的是錯誤的問題。
標准庫不為每個用途提供容器,而是提供一系列有用的建築用磚 。
如果你想要連續的存儲,那么你應該使用std::vector
並考慮使它符合你的其他要求:
construct
方法來完成非初始化 std::search
或滾動您自己的特定搜索算法來完成搜索模式(Knuth Morris Pratt,Boyer Moore,...) 無論如何,我建議將vector
封裝到一個具有明確語義角色的專用類中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.