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

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

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

映射数组又称为关联数组,是一种存储 key-value 对的数据结构,在 C++ 中通常使用 std::mapstd::unordered_map 实现。

使用 std::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::unordered_mapstd::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::mapstd::unordered_map 来实现。如果需要有序性,可以选择 std::map,否则可以选择 std::unordered_map。 以上示例代码可以帮助你更好地理解映射数组的使用方法,你可以根据自己的需求进行调整和扩展。