我已经尝试过搜索但未发现任何内容。
我正在学习STL容器,并了解顺序容器和关联容器的优缺点,但是我不确定为什么有人会更喜欢无关容器而非关联容器,因为它肯定不会影响元素的插入,查找和删除
它纯粹是一个性能问题,即它需要更多的处理才能插入/移除到关联容器,因为它必须经过排序? 我不太了解系统方面的事情,但在我的脑海中,我觉得无序容器需要比自动组织的容器更多“保养”。
如果有人能说出一些亮点,那将非常感激。
答案 0 :(得分:9)
纯粹抽象地考虑这样一个事实,即元素的排序是一个额外的“功能”,你必须付出代价,所以如果你不需要它(比如在查找字典中),那你就不应该必须付钱。
从技术上讲,这意味着可以通过使用哈希表来实现无序容器,具有预期的查找和插入复杂度O(1),而不是有序容器的O(log n)。
在切线相关的注释中,当使用字符串作为键时,有一个巨大的实用优势:有序容器必须在树行走的每个地方执行完整的字符串比较,而只有一个哈希容器执行单个散列操作(甚至可以“优化”以仅从非常长的字符串中采样固定数量的字符),并且在实践中经常变得更快。
如果不要求订购,那么最好的办法是尝试两种容器类型(其界面几乎完全相同)并比较 中的性能使用情况。
答案 1 :(得分:2)
不确定为什么有人会更喜欢无关容器而不是关联容器
这些功能并非独家。容器可以是关联的,如果是,也可以是单独的。
如果您熟悉hash maps,那就是无序容器利用的技术。 标准库使用术语“无序”而不是“哈希”,以便在需要的时候不强加特定的技术只是特定的性能承诺。 (见注释)
答案 2 :(得分:0)
我们使用无序容器当不需要对象的排序时你最关心对象查找的性能,因为无序容器在任何地方都有最快的搜索/插入是O(1)而不是有序容器(关联容器取O(log n)),Sequence容器取O(n))。