📅  最后修改于: 2023-12-03 15:30:06.699000             🧑  作者: Mango
在 C++ 中,映射是一种将键映射到值的数据结构。映射容器提供了高效的数据检索和插入方法,其时间复杂度为平均 $O(logn)$。容器中的元素是按照顺序存储的,并且每个元素都有一个关键字唯一标识。
有两种主要的方式来实现映射插入,第一种是使用 std::map
,第二种是使用 std::unordered_map
。其中,std::map
是一个有序映射,而 std::unordered_map
是一个无序映射。
std::map
是一个有序映射容器,内部元素基于标准比较函数排序。在插入新元素时,容器会按照键值大小的顺序插入到正确的位置。下面是一个简单的示例代码,展示了如何使用 std::map
进行映射插入:
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> myMap;
myMap.insert(std::pair<std::string, int>("foo", 1));
myMap.insert(std::make_pair("bar", 2));
myMap.emplace("baz", 3);
for (auto const& [key, val] : myMap) {
std::cout << key << ": " << val << std::endl;
}
return 0;
}
输出结果如下:
bar: 2
baz: 3
foo: 1
std::unordered_map
是一个无序映射容器,内部元素不会按照任何特定的顺序存储。在插入新元素时,容器会根据哈希函数计算键值的哈希码,然后将元素插入到相应的桶中。下面是一个简单的示例代码,展示了如何使用 std::unordered_map
进行映射插入:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap;
myMap.insert(std::pair<std::string, int>("foo", 1));
myMap.insert(std::make_pair("bar", 2));
myMap.emplace("baz", 3);
for (auto const& [key, val] : myMap) {
std::cout << key << ": " << val << std::endl;
}
return 0;
}
输出结果如下:
baz: 3
foo: 1
bar: 2
本文介绍了在 C++ 中实现映射插入的两种方法,分别是使用 std::map
和 std::unordered_map
。std::map
是一个有序映射容器,std::unordered_map
是一个无序映射容器。无论使用哪种容器,插入新元素都非常简单,只需要调用相应容器的插入函数即可。