C++ 各种map对比

时间:2025-03-22 12:24:42
#include <iostream> #include <map> #include <unordered_map> #include <ext/hash_map> // 对于支持 hash_map 的编译器 // 演示 std::map 的使用 void testStdMap() { std::map<int, std::string> myMap; myMap[1] = "apple"; myMap[2] = "banana"; myMap[1] = "cherry"; // 键 1 重复,会覆盖原有的值 std::cout << "std::map:" << std::endl; for (const auto& pair : myMap) { std::cout << pair.first << ": " << pair.second << std::endl; } } // 演示 std::unordered_map 的使用 void testUnorderedMap() { std::unordered_map<int, std::string> myUnorderedMap; myUnorderedMap[1] = "apple"; myUnorderedMap[2] = "banana"; myUnorderedMap[1] = "cherry"; // 键 1 重复,会覆盖原有的值 std::cout << "\nstd::unordered_map:" << std::endl; for (const auto& pair : myUnorderedMap) { std::cout << pair.first << ": " << pair.second << std::endl; } } // 演示 std::multimap 的使用 void testMultiMap() { std::multimap<int, std::string> myMultiMap; myMultiMap.insert({1, "apple"}); myMultiMap.insert({2, "banana"}); myMultiMap.insert({1, "cherry"}); // 键 1 重复,允许插入 std::cout << "\nstd::multimap:" << std::endl; for (const auto& pair : myMultiMap) { std::cout << pair.first << ": " << pair.second << std::endl; } } // 演示 std::unordered_multimap 的使用 void testUnorderedMultiMap() { std::unordered_multimap<int, std::string> myUnorderedMultiMap; myUnorderedMultiMap.insert({1, "apple"}); myUnorderedMultiMap.insert({2, "banana"}); myUnorderedMultiMap.insert({1, "cherry"}); // 键 1 重复,允许插入 std::cout << "\nstd::unordered_multimap:" << std::endl; for (const auto& pair : myUnorderedMultiMap) { std::cout << pair.first << ": " << pair.second << std::endl; } } // 演示 hash_map 的使用 void testHashMap() { __gnu_cxx::hash_map<int, std::string> myHashMap; myHashMap[1] = "apple"; myHashMap[2] = "banana"; myHashMap[1] = "cherry"; // 键 1 重复,会覆盖原有的值 std::cout << "\nhash_map:" << std::endl; for (const auto& pair : myHashMap) { std::cout << pair.first << ": " << pair.second << std::endl; } } int main() { testStdMap(); testUnorderedMap(); testMultiMap(); testUnorderedMultiMap(); testHashMap(); return 0; }