C++ 各种map对比
#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;
}