C++ 标准模板库(STL)汇总
一、STL容器概述
C++ STL (Standard Template Library标准模板库)是通用类模板和算法的集合,它给我们提供了一些标准的数据结构的实现如queues(队列), lists(链表), 和 stacks(栈)等。在我们使用C++编程时经常会使用到STL容器,非常简单也很方便。
STL的容器可以分为以下三个大类:
顺序结构:
Vectors(动态数组)
Lists(链表)
Double Ended Queues(双向队列)
常用函数:
在最后添加一个元素 push_back()
移除最后一个元素 pop_back()
插入元素 insert()
删除指定元素erase()
容器适配器:
Stacks(栈)
Queues(队列)
Priority Queues(优先队列)
常用函数:
增加元素 push()
移除元素 pop()
联合容器:
Bitsets
Maps
MultiMaps
Sets
MultiSets
常用函数:
插入元素:insert()
删除元素:erase()
我们程序员使用复杂数据结构的最困难的部分已经由STL完成. 如果我们想使用包含int数据的stack, 我们只要写出如下的代码:
stack<int> myStack;
接下来, 我们只要简单的调用 push() 和 pop() 函数来操作栈. 借助 C++ 模板的威力, 他可以指定任何的数据类型,不仅仅是int类型. STL stack实现了栈的功能,而不管容纳的是什么数据类型。
二、STL容器汇总
【C++ STL 温故而知新 001】vector容器和iterator迭代器
三、STL容器比较
vector | deque | list | set | multiset | map | multimap | |
名称 | 向量容器 | 双向队列容器 | 列表容器 | 集合 | 多重集合 | 映射 | 多重映射 |
内部数 据结构 |
连续存储的数组形式(一端开口的组) |
连续或分段连续存储数组(两端 开口的数组) |
双向环状链表 | 红黑树(平衡检索二叉树) | 红黑树 | 红黑树 | 红黑树 |
头文件 | #include <vector> | #include <deque> | #include <list> | #include <set> | #include <set> | #include <map> | #include <map> |
操作元素的方式 | 下标运算符:[0](可以用迭代器,但插入删除操作时会失效) |
下标运算符或迭代器 |
只能用迭代器(不断用变量值来递推新值,相当于指针),不支持使用下标运算符 |
迭代器 | 迭代器 | 迭代器 | 迭代器 |
插入删除操作迭代器是否失效 | 插入和删除元素都会使迭代器失效 | 插入任何元素都会使迭代器失效。删除头和尾元素,指向被删除节点迭代器失效,而删除中间元素会使所有迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 | 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 |
vector | deque | list | set | multiset | map | multimap | |
名称 | 向量容器 | 双向队列容器 | 列表容器 | 集合 | 多重集合 | 映射 | 多重映射 |
特点 |
增加和获取元素效率 很高,插入和删除的 效率很低 |
增加和获取元素效率 较高,插入和删除的 效率较高 |
增加和获取元素效率 很低,插入和删除的 效率很高 |
1.键(关键字)和值(数据)相等(就是模版只有一个参数,键和值合起来) 2.键唯一 3.元素默认按升序排列 |
1.键和值相等 2.键可以不唯一 3.元素默认按升序排列 |
1.键和值分开(模版有两个参数,前面是键后面是值) 2.键唯一 3.元素默认按键的升序排列 |
1.键和值分开 2.键可以不唯一 3.元素默认按键的升序排列 |
定义容器 |
vector<string> book(50); | deque<string> book(50); | list<string> book; | set<string> book; | multiset<string> book; | map<int,string> book; | multimap<int,string> book; |
C++ 标准模板库(STL)汇总相关推荐
- C++ 标准模板库(STL)
C++ 标准模板库(STL) C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列) ...
- c++标准模板库STL【快速查找】【最全】【常用】【语法】
c++标准模板库STL[快速查找][最全][常用][语法] c标准模板库STL快速查找最全常用语法 vector- 变长数组 set-内部自动有序且不含重复元素 ...
- c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解
c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...
- 13 标准模板库STL【C++】
13 标准模板库STL 13- 判断题 单选题 填空题 程序填空题 函数题 7-1 .查找电话号码 7-2 姓名排序 7-3 Score Processing 13+ 编程题 7-1 查找成绩并折算后 ...
- 第十章 标准模板库STL
第十章 标准模板库STL 因为是在复习时重写的,无法在PTA上验证,编程题格式可能有误. 判断题 1.可以通过下标随机访问向量vector中的元素.(T) 2.当向量对象的内存用完之后,就会产生越界错 ...
- 标准模板库STL(Standard Template Library)
标准模板库STL(Standard Template Library)指南 /*刘振飞liuzf@pku.org.cn 1999-10-20*/ / *版权所有 (C) 1999-2004 刘振飞li ...
- C++中标准模板库STL基本概念
0. 前言 C++语言的一大优势就是便于软件的重用,而重用体现在两方面: 1. 面向对象思想:继承和多态,标准类库 2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库 ...
- 蓝桥杯算法竞赛系列第0章——蓝桥必考点及标准模板库STL(上)(万字博文,建议抱走)
欢迎来到:遇见蓝桥遇见你,不负代码不负卿! 目录 一.蓝桥必考点剖析 二.什么是STL 三.vector的常见用法详解 1.vector的定义 2.vector容器内元素的访问 (1).通过下标访 ...
- C++ ——模板 标准模板库STL
C++ 知识基础 流操作符 类 & 基础 初始化和重载 类 & 高级 继承和多态 模板 & 标准模板库STL 目录 C++ 一.模板 1.函数模板 2.类模板 二.标准模板库S ...
最新文章
- ffmpeg architecture(中)
- Linux【命令】修改文件内容
- 服务器组装 华硕主板,专业组装服务器 华硕主板P9D-C/4L热销
- 卖shell看站什么意思_粤语俚语卖咸鸭蛋是什么意思?
- redis cluster集群模式简述
- Oracle学习 实战心得总结
- PASCAL VOC2012数据集分析
- 移动硬盘连接计算机接口类型,移动硬盘数据线接口类型有哪几种-单usb接口
- 太牛了!阿里p8全面透彻剖析《Netty权威指南》,程序员必看!
- icom对讲机写频线定义_ICOM对讲机的常见故障和使用中的问题
- 数据库性能优化的五种方案
- 南京计算机徐宪忠,nakaga
- html tbody增加行,实现所有行变色,所有行删除。给出的结构中少了tbody,加上就可以了。...
- 【自然语言处理】【可解释性】Perturbed Masking:分析和解释BERT的无参数探针
- TiDB 实战优化之 SQL 常见问题与优化案例
- 实验一:inode耗尽导致磁盘故障
- 高性能计算机储存部件硬盘,为啥电脑换了固态硬盘会变快 它比机械盘强在哪?...
- 零钱通项目(两个版本)含思路详解
- 九个特别的工作网站,开发人员的工具箱,可以拥有很多的使用资源,节省大量的时间,并提升工作效率
- F28335第五篇——EALLOW和EDIS
热门文章
- Arduino实时时钟设计(TM1637数码管显示)
- 使用MSHTML解析HTML代码
- STM32使能IIC驱动电流检测芯片INA226
- 全国计算机三级网络技术电子版,全国计算机三级网络技术最新版笔试电子教材(完全免费版).doc...
- RocketMQ Web控制台监控界面介绍+部署
- Cocos2d的ChipMunk
- Ti 官方文档阅读笔记
- Andoird conflicts with another tag that has the same ID
- PCA降维方法及在ATT人脸数据集的应用实例
- 一.JavaWeb学习路线