📅  最后修改于: 2023-12-03 14:54:04.189000             🧑  作者: Mango
映射数组又称为关联数组,是一种存储 key-value 对的数据结构,在 C++ 中通常使用 std::map
或 std::unordered_map
实现。
std::map
是一个关联容器,用来存储 key-value 对,其中的 key 是唯一的,而 value 可以重复。它内部使用红黑树来维护有序性,并提供了快速的查找、删除、插入等操作。
下面是一个使用 std::map
实现的映射数组的示例代码:
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> m = {{"apple", 2}, {"banana", 1}, {"orange", 3}};
std::cout << "m[\"apple\"] = " << m["apple"] << '\n';
std::cout << "m[\"banana\"] = " << m["banana"] << '\n';
std::cout << "m[\"orange\"] = " << m["orange"] << '\n';
m["apple"] = 5;
m.insert({"pear", 4});
std::cout << "After modifying and inserting, m[\"apple\"] = " << m["apple"] << '\n';
std::cout << "After modifying and inserting, m[\"pear\"] = " << m["pear"] << '\n';
return 0;
}
输出结果为:
m["apple"] = 2
m["banana"] = 1
m["orange"] = 3
After modifying and inserting, m["apple"] = 5
After modifying and inserting, m["pear"] = 4
std::unordered_map
比 std::map
更加灵活,它使用哈希表来维护元素的位置,所以不具有有序性。相比之下,它提供了更快的元素查找和删除操作。
下面是一个使用 std::unordered_map
实现的映射数组的示例代码:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> um = { {"apple", 2}, {"banana", 1}, {"orange", 3} };
std::cout << "um[\"apple\"] = " << um["apple"] << '\n';
std::cout << "um[\"banana\"] = " << um["banana"] << '\n';
std::cout << "um[\"orange\"] = " << um["orange"] << '\n';
um["apple"] = 5;
um.insert({ "pear", 4 });
std::cout << "After modifying and inserting, um[\"apple\"] = " << um["apple"] << '\n';
std::cout << "After modifying and inserting, um[\"pear\"] = " << um["pear"] << '\n';
return 0;
}
输出结果为:
um["apple"] = 2
um["banana"] = 1
um["orange"] = 3
After modifying and inserting, um["apple"] = 5
After modifying and inserting, um["pear"] = 4
映射数组是一个非常有用的数据结构,在 C++ 中可以使用 std::map
或 std::unordered_map
来实现。如果需要有序性,可以选择 std::map
,否则可以选择 std::unordered_map
。
以上示例代码可以帮助你更好地理解映射数组的使用方法,你可以根据自己的需求进行调整和扩展。