C++STL常用操作之unordered_map与map篇

C++STL常用操作之unordered_map与map篇

简介:

map和unordered_map存储的内容是一样的,都是(key,value)。

区别:

1.map内置红黑树,unordered_map内置哈希表。

2.map具有排序功能,unordered_map内的元素是无序的。

3.map的查询,插入、删除操作时间复杂度都是O(logn),unordered_map的查找时间复杂度是O(1)。

4.map因为内置红黑树,每个节点都要额外存储父节点等内容,所以内存占用较大,但是unordered_map还更大!

注意:虽然哈希表的查询时间是O(1),但是不一定unordered_map的查询时间就一定比map短,在考虑到数据量的时情况下,因为unordered_map的hash函数构造速度比较慢,所以应该具体情况, 具体分析,具体选择!

#include<unordered_map>

常用操作:

#include<iostream>
#include<unordered_map>
#include<string>
using namespace std;
int main() {
    
    
    unordered_map<int,string> um;
    um.insert(pair<int,string>(1,"one"));       //一般插入
    um[3] = "three";                                    //数组的形式,如果存在就修改,否则插入
    um.insert(pair<int,string>(2,"two"));
    um[2] = "twotwo";                                   //修改
    for(auto it = um.begin();it != um.end();++it)       //begin,end,迭代器
        cout<<it->first<<" "<<it->second<<"\n";
    cout<<"um'size = "<<um.size()<<"\n";                //size
    if(um.empty())                                      //empty
        cout<<"um is empty!"<<"\n";
    else
        cout<<"um is not empty"<<"\n";
    auto it = um.find(1);                            //find
    if(it != um.end())
        cout<<it->first<<" "<<it->second<<"\n";
    cout<<um.count(2)<<"\n";                         //count
	return 0;
}
输出:
2 twotwo
1 one
3 three
um'size = 3
um is not empty
1 one
1

猜你喜欢

转载自blog.csdn.net/qq_45985728/article/details/113663410