簡體   English   中英

在C ++中進行關聯和迭代

[英]Associating and iterating in C++

我遇到了要使用關聯容器的情況,我選擇使用std :: unordered_map,因為可以使用該容器容納數百萬或更多的元素是完全可行的。 但是現在我也需要按順序進行迭代。 我考慮過讓值類型在列表中相互鏈接,但是現在我將在內存管理方面遇到問題。

我應該更改容器,對std :: map說嗎? 或者只是通過unordered_map迭代一次,插入向量中,然后排序,然后進行迭代? 我不太可能需要以有序方式反復進行迭代。

您可以使用Boost.MultiIndex ,在同一基礎對象集合上指定無序(哈希)索引和有序索引。

可能存在的問題-現有關聯容器模型沒有自然映射,如果您一直不需要第二個索引,則可能會過大。

好吧,您知道您選擇的兩個替代方案的各種運算的O()。 您應該基於此進行選擇,並根據需要在何處發生性能以及哪個容器最適合THAT進行成本/收益分析。

當然,我可能不太了解如何為您進行分析。

暫無
暫無

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

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