📜  带有示例的 C++ 中的无序映射数组(1)

📅  最后修改于: 2023-12-03 14:54:04.174000             🧑  作者: Mango

带有示例的 C++ 中的无序映射数组

在 C++ 中,无序映射数组指的是 unordered_map。它可以在常量时间内(平均情况下)查找、插入和删除一对关键字和对应值的元素。unordered_map 通过哈希表实现,可以 O(1) 地访问某个元素。

创建 unordered_map

在 C++ 中,可以通过以下方式创建 unordered_map:

#include <unordered_map>
std::unordered_map<int, std::string> myMap;

其中,int 表示键的数据类型,std::string 表示值的数据类型。myMap 是一个空的无序映射数组。

插入元素

可以使用 insert 函数插入一个元素到 myMap 中:

myMap.insert({1, "Hello"});

也可以使用 [] 运算符插入元素:

myMap[2] = "World";
访问元素

可以使用 [] 运算符访问某个元素:

std::string value = myMap[1];

也可以使用 at 函数访问某个元素:

std::string value = myMap.at(2);

注意,如果元素不存在,[] 运算符会自动插入一个键为默认值的元素,而 at 函数会抛出 out_of_range 异常。

为了避免异常和无意义的插入操作,可以使用 count 函数判断是否存在某个键:

if (myMap.count(3)) {
    std::cout << myMap[3] << std::endl;
}
遍历元素

可以使用迭代器遍历 unordered_map 中的元素:

for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << it->first << ": " << it->second << std::endl;
}

也可以使用范围 for 循环遍历元素:

for (const auto& pair : myMap) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}
删除元素

可以使用 erase 函数删除某个键对应的元素:

myMap.erase(1);

也可以使用迭代器删除某个元素:

auto it = myMap.find(2);
if (it != myMap.end()) {
    myMap.erase(it);
}
总结

无序映射数组是 C++ 中一种非常实用的数据结构。它可以快速地进行查找、插入和删除操作,并且可以用迭代器遍历元素。在编写程序时,可以根据实际需要选择合适的数据结构来提高程序效率。