map
在C++中,map是一个关联容器,它存储的元素是键值对,并且这些键值对是根据键的顺序进行排序的。map容器通过键来访问对应的值,它保证了每个键在容器中都是独一无二的。
map的主要特性包括:
-
有序性:
map中的元素会根据键的顺序进行排序,默认情况下是按照键的升序排列。 -
唯一键:每个键在
map中都是唯一的,不允许有重复的键。 -
直接访问:可以通过键直接访问到对应的值,访问效率较高。
-
动态大小:
map的大小是可以动态变化的,它会根据需要自动进行扩容。
#include<iostream>
#include<map>
int main()
{
std::map<std::string,int>mymap;
//向map中插入元素
mymap["apple"]=5;
mymap["banana"]=3;
mymap["cherry"]=8;
//通过键访问相应的值
std::cout<<"the price of an apple is:"<<mymap["apple"]<<std::endl;
//检查某个键是否存在
if (mymap.find("banana")!=mymap.end())
{
std::cout<<"banana is in the map!"<<std::endl;
}
//遍历map
for(const auto& pair:mymap)
{
std::cout<< pair.first<<":"<<pair.second<<std::endl;
}
return 0;
}
/*
the price of an apple is:5
banana is in the map!
apple:5
banana:3
cherry:8
*/
unordered_map
unordered_map 是 C++ 标准库中的一个非常实用的关联容器,它专门用于存储键值对,并且这些键值对是无序的。这意味着,与 map 容器不同,unordered_map 不会根据键的顺序来存储元素,而是依赖于哈希表来实现快速的元素查找、插入和删除操作。
unordered_map 的主要特性包括:
- 无序性:
unordered_map中的元素不会按照键的顺序进行排序。 - 唯一键:每个键在
unordered_map中都是独一无二的,不允许有重复的键。 - 快速访问:通过键可以非常迅速地访问到对应的值,这是因为
unordered_map内部使用了哈希表。 - 动态大小:
unordered_map的大小是可以动态变化的,它会根据需要自动进行扩容或缩容。
unordered_map 的基本用法如下:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> umap;
// 向 unordered_map 中插入元素
umap["apple"] = 5;
umap["banana"] = 3;
umap["cherry"] = 8;
// 通过键访问对应的值
std::cout << "The price of an apple is " << umap["apple"] << std::endl;
// 检查某个键是否存在
if (umap.find("banana") != umap.end()) {
std::cout << "Banana is in the map!" << std::endl;
}
// 遍历 unordered_map
for (const auto& pair : umap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
/*The price of an apple:5
banana is in the map!
apple:5
cherry:8
banana:3*/
在这个例子中,创建了一个 unordered_map,其中键是字符串类型,值是整向 unordered_map 中插入了三个键值对,并通过键访问了对应的值。接着,检查了某个键是否存在于 unordered_map 中,并遍历了 unordered_map 中的所有元素。
C++ map与unordered_map详解
739

被折叠的 条评论
为什么被折叠?



