如果我只想插入很多(10.000-100.000)的小(int,浮点数和双打)项目然后遍历所有项目(顺序不重要),那么将使用std容器? (注意:项目的数量在开始时是未知的)
我注意到unsorted_set,list和forward_list有O(1)用于插入,O(n)用于迭代。还有其他还有这种复杂性吗?哪一个是最快的? (如果在记忆使用方面存在显着差异,我也会有兴趣了解它们。
(我只对std容器感兴趣,而不是Boost或其他库容器)
答案 0 :(得分:2)
我打赌std::vector
打电话给std::vector::reserve()
。
答案 1 :(得分:0)
矢量可能是一个不错的选择。它与内存消耗中的数组相同。 O(1)插入(如果在最后插入)和O(n)迭代。它是最简单的容器,如果您的列表中没有删除或随机插入,这是一个不错的选择。
答案 2 :(得分:0)
你问题中的所有类都有你想要的最佳复杂性,但std :: vector可能更快,特别是 如果你知道要插入多少元素,即你有一个上限。
我认为性能可能会有所不同,具体取决于您的编译器,编译器版本以及要插入的元素数量。很抱歉没有提供更具体的帮助。
答案 3 :(得分:0)
根据我的说法,这取决于你想要对容器中的元素做什么。
此外,除了这些之外,还有容器适配器以及queue,stack,priority_queue等。
所以,这一切都取决于你的实现以及你想从元素容器中得到什么。