【发布时间】:2015-07-21 08:33:30
【问题描述】:
我想知道在std::set、std::map 和std::unordered_set、std::unordered_map 之间迭代它们的元素时哪些数据结构更有效。
我搜索了 SO,发现了这个 question。答案要么建议复制std::vector 中的元素,要么使用Boost.Container,恕我直言不回答我的问题。
我的目的是在一个容器中保存大量独特的元素,大多数时候我都想遍历它们。插入和提取更为罕见。我想避免 std::vector 与 std::unique 结合使用。
【问题讨论】:
-
如果迭代频繁,你真的,真的,真的想要一个向量。
-
@101010:一般来说,这些问题不能通过思考来回答,只能通过经验测试来解决——而且答案可能会根据计算机本身的不同而变化,计算机上还运行着什么其他东西、库实现、容器的使用方式等等。
-
@101010:我数不清我读那本书的频率。 “我不能使用 Boost。”除非您的目标平台实际上不支持 Boost,否则我无法真正理解是谁提出了这些限制。 Boost 是标准库的下一个最好的东西,并且在原则上将它排除在项目之外是......好吧...... 在我在这里超越界限之前。 ;-)
-
@101010:我只想说,我希望你有足够的资格来讨论这个话题。至少让他们告诉你原因,因为不使用 C++ 的 Boost 有点像不使用 Java 中的设计模式,因为……未知。 ;-)
-
@Hurkyl '不能通过思考来回答'这将有助于肯定地思考
标签: c++ c++11 unordered-map unordered-set stdset