【发布时间】:2020-07-04 04:36:41
【问题描述】:
我明白为什么 unordered_map 有一个迭代器(begin() 和 end()),但我看不出从 find / emplace 返回迭代器的值是什么。
我无法想象这样一个用例,您希望在给定键而不是开始/结束处启动迭代器(因为一个好的散列函数应该使键在表中的位置任意)。
另一种选择;只返回值、对值的引用或键和值对涵盖了我可以想象的所有用例,避免了创建迭代器的不必要工作,并且在使用它访问底层对/值时可能导致额外的内存延迟.
【问题讨论】:
-
如果
find找不到值怎么办?那你返回什么? -
返回值的副本或一对键和值比返回迭代器更“不必要的工作”。迭代器很便宜。
-
取决于可能是真的类型。然而,指向底层货币对(或只是底层价值)的指针会更便宜。
标签: c++