📜  C++中的关联数组(1)

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

C++中的关联数组

什么是关联数组

关联数组也被称为映射或字典,是一种基于键值对的数据结构,其中键和值一一对应。在C++中,可以使用std::mapstd::unordered_map等STL容器实现关联数组。

使用关联数组
创建关联数组

可以使用以下语法定义关联数组:

#include <map>
#include <string>

std::map<std::string, int> myMap; // key为字符串类型,值为整数类型的关联数组
插入元素

使用insert()函数可以将键值对插入关联数组中:

myMap.insert(std::make_pair("apple", 1));
myMap.insert(std::make_pair("orange", 2));
myMap["banana"] = 3; // 使用下标运算符[]也可以插入元素
访问元素

使用[]运算符和at()函数可以访问关联数组中的元素:

int num = myMap["apple"]; // num的值为1
int num2 = myMap.at("orange"); // num2的值为2

需要注意的是,如果关联数组中不存在对应的键,[]运算符会自动创建一个对应值为默认值的键值对。而at()函数则会抛出异常。

删除元素

可以使用erase()函数删除关联数组中指定键的元素:

myMap.erase("apple"); // 删除键为"apple"的元素
遍历关联数组

可以使用迭代器或for-each循环遍历关联数组,如:

for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << it->first << ": " << it->second << std::endl; // 输出每个键值对
}

for (const auto& [key, value] : myMap) {
    std::cout << key << ": " << value << std::endl; // 使用C++17的结构化绑定输出每个键值对
}
总结

关联数组是一种非常实用的数据结构,可以快速查找和操作元素。在C++中,STL提供了多种实现方式,程序员可以根据实际需求选择合适的容器类型。