【发布时间】:2013-01-25 20:17:55
【问题描述】:
我已经尝试过搜索,但没有找到任何东西。
我正在学习 STL 容器,并了解顺序容器和关联容器的优缺点,但是我不确定为什么有人会更喜欢无序容器而不是关联容器,因为它肯定不会影响元素插入、查找和删除.
这纯粹是一个性能问题,即插入/删除到关联容器需要更多处理,因为它必须经过排序? 我不太了解系统方面的事情,但在我的脑海中,我觉得一个无序的容器比自动组织的容器需要更多的“维护”。
如果有人能提供一些启示,那将不胜感激。
【问题讨论】:
-
很明显,自动组织的那个需要更多的维护:它需要在任何时候发生变化时重新组织。另一个没有。
-
阅读书籍或尝试自己编写代码。有了经验就会明白。
-
你用你的术语把我弄糊涂了。您将“无序容器”与“关联容器”进行对比,但这两者并不相互排斥。
std::map和std::unordered_map是 both 关联数组。而std::set和std::unordered_set不是。 -
“关联容器”表示“按值查找”,与“序列容器”形成对比,“按插入位置查找”。
-
好吧,我错了。我猜“关联容器”在 C++ 中意味着不同的东西。它包括
std::set和变体。但它也包括无序变体,因此您的术语仍然令人困惑。