您当前的位置: 首页 >  容器

虎冯河

暂无认证

  • 3浏览

    0关注

    112博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

c++ stl容器

虎冯河 发布时间:2021-03-02 14:08:42 ,浏览量:3

1、vector

 

2、string

 

3、map,存储pair(键值对)的容器

map的特点:

1、有序性,键(key)默认是以升序的方式排列。

2、关联

3、映射

4、键(key)是唯一的,值(value)可以相同。

5、map内部的算法属于红黑树,效率非常高,查找速度非常快。

6、缺点是空间的占用率比较高,每一个节点都有一个父集和子集。     分配器 allocator

 

#include            //包含头文件

int main()
{
    map maps;       //第一种声明,初始化方式
    map maps2{{1,"ddd"},{5,"ggg"}};       //第二种声明,初始化方式
    maps[10]="sss";     //赋值

    maps.insert(make_pair(98, "mapmap"));           //第一种插入方式
    maps.insert({{15,"xxx" }, { 26,"jkh"}});        //第二种插入方式
    maps.insert(pair(1,"mapmap"));      //第三种插入方式 
    maps.insert(map::value_type(6, "mapmap"));      //第四种插入方式

    maps.at(10);        //获取value(second)与maps[10]一样,也是获取value(second)
    maps.count(10);     //是否包含这个key(first),返回0表示不包含,返回1表示包含。
    maps.size();        //获取尺寸大小
    maps.erase(10);     //删除
    auto mapValue = maps[15];        //获取值
    auto c2 = maps.equal_range(26);           //获取key(first)和value(second)
    map ::iterator it=maps.find(15);         //查找,返回一个迭代器

    //第一种遍历方式
    for (auto& Tmp :maps)     
    {
        Tmp.first;            //获取key
        Tmp.second;           //获取value  
        
        //UE4的获取key,value的方式
        //Tmp.Key      //获取key
        //Tmp.Value    //获取value
    }

     //第二种遍历方式
    for (const pair& Tmp : maps)     
    {
        Tmp.first;         //key
        Tmp.second;        //value   

    }
    //第三种遍历方式
    for (map ::iterator it=maps.begin();it!=maps.end();it++)       
    {
        it->first;        //key
        it->second;       //value  
    }

}

    

4、双向链表

 

5、queue队列

 

6、 stack栈

 

7、forward_list单向链表

 

8、优先级队列

 

9、multiset

 

10、mulitmap

 

11、unorderred_map(无序的map)

unorderred_map的特点:

1、无序的。

2、内部是哈希,哈希比红黑树速度更快。

3、建立哈希表的时候比较耗时间。

#include         //包含头文件
   

	
int main()
{   

	unordered_mapumap;         //初始化
    umap[45] = 55;	    //插入
	umap.insert(make_pair(1,10));       //插入
	int element=umap.at(1);			    //获取value值
	element=umap[3];			        //获取value值

}

 

12、unorderred_multimap(无序的multimap)

#include    //包含头文件

	
int main()
{
    unordered_multimapunMultiMap;
	bool isEq=unMultiMap.key_eq()(1,10);        //判断key是否相等

}

13、unordered_set(无序的set)

与set的区别

set是有序的。

unordered_set是无序的。

#include  
#include             //包含头文件

int main()
{

    set nset;                 //红黑树的平衡二叉树
    nset.insert(4653);
    nset.insert(4148);
    nset.insert(7672);
    nset.insert(4621);
    nset.insert(456786);
    nset.insert(458);


    unordered_setuset;        //哈希
    uset.insert(4653);
    uset.insert(4148);
    uset.insert(7672);
    uset.insert(4621);
    uset.insert(456786);
    uset.insert(458);

}

set是有序的

unordered_set是无序的。

14、unordered_multiset(无序的multiset)

关注
打赏
1649935522
查看更多评论
立即登录/注册

微信扫码登录

0.0361s