📅  最后修改于: 2023-12-03 14:54:04.174000             🧑  作者: Mango
在 C++ 中,无序映射数组指的是 unordered_map。它可以在常量时间内(平均情况下)查找、插入和删除一对关键字和对应值的元素。unordered_map 通过哈希表实现,可以 O(1) 地访问某个元素。
在 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++ 中一种非常实用的数据结构。它可以快速地进行查找、插入和删除操作,并且可以用迭代器遍历元素。在编写程序时,可以根据实际需要选择合适的数据结构来提高程序效率。