Map、HashMap概念
Map是STL的一个关联容器,以键值对存储的数据,其类型可以自己定义,每个关键字在map中只能出现一次,关键字不能修改。map也可以说关于key-value的映射。
HashMap是基于哈希表实现的,每一个元素是一个key-value对。以空间换时间,是存储key-value键值对的集合。
区别
- hash_map需要hash函数,等于函数;map只需要比较函数(小于函数)。
- hash_map底层采用hash表存储,map一般采用红黑树实现,所以hash_map的key值是无序的,map存储是有有序的。
- map的优点在于可以自动按照Key值进行排序,查找时间复杂度是log(n);hash_map优点在于它各项操作的平均时间复杂度接近常数,即O(1).
使用情况
总体来说,hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级别;而map的查找速度是log(n)级别。
Map的使用方法
#include <map>
void printMap(map<int,int>&m)
{
for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
{
cout << "key = " << it->first << " value = " << it->second << endl;
}
cout << endl;
}
void test01()
{
//插入
map<int, int> m;
//第一种插入方式
m.insert(pair<int, int>(1, 10));
//第二种插入方式
m.insert(make_pair(2, 20));
//第三种插入方式
m.insert(map<int, int>::value_type(3, 30));
//第四种插入方式
m[4] = 40;
printMap(m);
//删除
m.erase(m.begin());
printMap(m);
m.erase(3);
printMap(m);
//清空
m.erase(m.begin(),m.end());
m.clear();
printMap(m);
}
int main() {
test01();
system("pause");
return 0;
}