在C++中,unordered_map是一个使用哈希表实现的无序关联容器,碰撞(collision)是指多个键映射到同一个哈希值的情况。unordered_map内部采用链地址法来解决碰撞问题,即在哈希表中每个桶(bucket)存储一个链表或红黑树,相同哈希值的键值对被存储在同一个桶中。
当遍历unordered_map时,可以使用迭代器来访问每个键值对,无需担心碰撞的问题,因为unordered_map在内部已经处理了碰撞。以下是一个简单的示例代码,展示如何遍历unordered_map:
#include#include int main() { std::unordered_map myMap = { {1, "apple"}, {2, "banana"}, {3, "cherry"} }; // 使用迭代器遍历unordered_map for (auto it = myMap.begin(); it != myMap.end(); ++it) { std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl; } return 0; }
在上面的代码中,我们首先创建了一个unordered_map对象myMap,并初始化了一些键值对。然后使用迭代器it遍历unordered_map,输出每个键值对的键和值。
需要注意的是,unordered_map的遍历顺序不是按照插入顺序或键的顺序,而是按照哈希值的顺序进行的。因此,遍历unordered_map时可能会得到不同的顺序。