簡體   English   中英

使用STL算法合並很多容器

[英]Merging a lot of containers with STL Algorithms

我有很多列表,向量,集合...(無論您喜歡使用什么)指向某些類的稱為RealAlgebraicNumberPtr的指針。 它們已排序。

我想合並它們,當然我想快速高效地做到這一點。

最佳選擇是什么? std::merge嗎? 或者也許std::set 我可以同時提供<和==排序。

有任何想法嗎?

如前所述, std::merge可以。

僅對於std :: list,您可以從std::list::merge 成員函數實現的優化中受益:它將列表節點從源拼接到目標。 這樣,源列表將變為空,但是它將避免資源(重新)分配

回復: std::set

實際上,您可以將std :::合並到std :: set中,以一次性獲得唯一的值。 使用通用合並,不會過濾重復的值,但是會對結果進行排序,因此您可以將std::unique應用於結果。 如果您期望重復很多,則使用std::set可能會更快

std::merge效率很高。 您使用哪個基礎容器取決於您的要求。 std::vector具有所有標准容器中最小的內存開銷,因此,如果您的數據很大,則應堅持這樣做。

如果使用std::vector ,則應在合並之前resize目標向量的resize ,以避免重新分配(您應該能夠預先計算所需的大小),而不要使用std::back_inserter

暫無
暫無

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

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