STL标准模板库

阅读须知:

C++语言实现了自定义模板,大家可以自己封装模板.

同样,C++的大牛们已经自己封装了模板库,类似于系统函数库,即STL(标准模板库).

目前C++中都包含STL标准化组件,在ubuntu上可以直接使用

鉴于学习Framework,经常性用到标准模板库下的数据增删改查

特此做一次小的总结,作为数据手册查询,不用查书那么麻烦了

些许不完全,以后还会再添加.

如有错误请及时提出!




正文


STL 内置常用模板

容   器: 存放不同对象的实体,通过容器的内部结构进行管理;

                  vector.deque .list .set .multiset .map .multimap .stack .queue .priority_queue

迭 代 器: 对指针的封装,是容器的内部类型;

                iterator .const_iterator .reverse_iterator .const_reverse_iterator

空间分配器: 用来为容器中的元素分配和释放空间

适 配 器: 转换器

算   法: 已实现的近百种算法

仿 函 数: 函数对象



容器分类:

序列式容器:存在一定的线性顺序关系;

        vector(动态数组,数组的尾部插入删除数据) 

        deque (两端队列,可以头部尾部插入删除数据)

        list(双向链表,任何位置插入删除数据)

关联式容器:是非线性数据结构(二叉树),各元素间没有明显的顺序关系,本质上就是键值对,容器中插入元素,首先根据键值之后到存储位置,再将元素的实际值写进去,


        set (快速查找符合条件的元素,但不允许出现重复值)

        multiset(在set的基础上可以出现重复值)

        map(一对一映射,基于key查找符合的元素,key不允许出现重复值)

        multimap(在map的基础上可以出现重复值)

容器适配器:让一种已存在的容器类型采用另外一种不同类型容器的工作方式来实现的一种机制,就是容器间的转换接口,

        stack(栈结构,后进先出)

        queue(队列,先进先出)

        priority_queue(具备优先级的队列,最高优先级的第一个出列)




序列式容器的常用函数:

交换函数: swap()

删除函数: erase()

清空函数: clear()

返回值代表当前容器包含元素个数:size()                                                                                          

调整容器空间的大小: resize(新的大小,初始化=零初始化)

检查容器是否为空函数:empty()

构造函数的参数类型:(元素个数,初始值=零初始化)

容器内插入元素:

        insert(pos,elem) 在指定位置pos插入elem

        insert(pos,n,elem) 在指定位置pos插入n个elem

        insert(pos,begin,end)将区间[begin,end)的数据插入到本容器pos位置之后


容器中的元素重新赋值:

        assign(n,elem);将容器中n个元素都赋值为elem,没有赋值的容器元素将被抛弃

        assign(begin,end);将区间[begin,end)中的数据赋值给本容器的元素,没有赋值的本容器元素被抛弃


复制开头元素并返回i: front()

复制末尾元素并返回: back()

末尾追加元素: push_back(elem)不能在初始化之后直接使用,要有值之后使用

删除末尾元素: pop_back()

返回值代表容器的开始位置:begin()      返回值是迭代器

返回值容器的结束位置的后一个位置:end()   返回值是迭代器




vector 独有的函数:

at(index)    访问vector元素,index代表下标,也可以使用数组的下标操作来查询数据

示例:vector<int> a(6,0)


list 独有的函数:

删除list容器中指定的元素:remove(elem)

删除list容器中第一个元素:pop_front()

删除list容器中最后一个元素:pop_back()

删除list容器中所有相邻的重复元素:unique()

list容器升序:sort()

list容器降序:sort(std::greater <T>)

list容器反序:reverse()

将另外一个list容器的全部元素移动到当前容器的指定位置:splice(pos,<list>)

将另外一个list容器的部分元素移动到当前容器的指定位置:splice(pos,<list>,begin,end)

将另外一个list容器的某个位置元素移动到当前容器的指定位置:splice(pos,<list>,pos2)

将另外一个容器合并到当前list容器:merge(<list>)

一种新的赋值方式        

            int a[7] = {2,123,23,45,35,43,53};

            list<int> l(a,a+7);


deque 独有的函数:

        几乎支持vector和list的常用操作

        详见:[https://en.cppreference.com/w/cpp/container/deque](https://en.cppreference.com/w/cpp/container/deque)




关联式容器:

是一种称为红黑树的平衡检索二叉树:set.multiset.map.multimap均采用了红黑树结构

数据结构:struct BinaryTreeNode{

                        keyType key;

                        int color;

                        BinaryTreeNode* parent;

                        BinaryTreeNode* left;

                        BinaryTreeNode* right;

                }        


set:

        容器中的每一个元素对应红黑树上的一个节点,每个元素可以使用key来表示,

        容器中的元素是按照一定的顺序排列的

        容器中key的属性是只读的,不可修改,除非先全部删除再写入

        默认升序:set<int> a;

        降序排序:set<int,greater<int> > a;

        返回值为true代表为空:empty()

        向容器中插入一个元素:insert(elem);    

        删除某个位置的元素:erase(pos);

        删除某个元素:erase(elem);

        删除所有元素:clear()

        查看某个元素的存放位置:find(elem)

        统计包含元素个数:size()





喜欢的话给个爱心,会有更多的干货哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容