我正在试验 tr1::unordered_map 并偶然发现了如何有效删除元素的问题。'erase' 方法提供通过键或迭代器删除。我认为后者效率更高,因为前者可能涉及隐式查找操作。另一方面,我在互联网上的调查显示,在调用 insert() 方法后,迭代器可能会变得无效。
我对典型的现实世界情况感兴趣,其中放入哈希表的对象具有足够长的生命周期,以便在该生命周期内调用 insert()。因此,我可以得出结论,在这种情况下,按键删除是唯一的选择吗?有没有其他方法可以更有效地删除对象?我完全意识到这个问题只在应用程序中很重要,因为删除经常发生。这是否会是我当前项目的情况,还有待观察,但我宁愿在设计我的项目时了解这些问题,而不是在已经存在大量代码时。