STL的一些基本操作
2024-10-18 17:18:21
STL是一个神奇的东西,在NOIP考试中非常重要。
什么是STL?
STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。
从逻辑层次来看,在STL中体现了泛型化程序设计的思想,引入了诸多新的名词,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代器(iterator)等。与OOP(object-oriented programming)中的多态(polymorphism)一样,泛型也是一种软件的复用技术;从实现层次看,整个STL是以一种类型参数化的方式实现的,这种方式基于一个在早先C++标准中没有出现的语言特性--模板(template)。
并且不要以为STL慢,如果在开O2的情况下还是非常快的。毕竟是一群超级神犇发明出来的。
而容器相当于数据结构,迭代器相当于指针,
容器:
SET
它是集合,自带去重排序,又因为是使用红黑树,所以很快。
操作也很多:
begin() ,返回set容器的第一个元素
end() ,返回set容器的最后一个元素
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可能包含的元素最大个数
size() ,返回当前set容器中的元素个数
rbegin ,返回的值和end()相同
rend() ,返回的值和rbegin()相同
MAP
Map是STL的一个关联容器,它提供一对一的数据 处理能力
(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)
由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。
这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处
操作:
其实map最重要的特点就是它的下标可以用任何的tape,所以非常好用还可以判断某一个下标是不是出现了。并且因为它相当于一个动态数组,所以在某些时候它会省空间。
VECTOR
vector是真正意义上的动态数组,并且在C++里,借用一下刘汝佳的话来说,它看上去是一个是一等公民,因为他可以直接赋值,还可以作为函数的返回值。
这是vector的遍历
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
vec.size(); 向量大小
vec.clear();清空向量
最新文章
- mac安装Mysql官方示例数据库employee
- 基于Python的Grib数据可视化
- JIRA官方:JIRA亮点介绍
- android 细节之 旋转动画
- SQL server 定时自动执行SQL存储过程
- mac os x下的程序快速切换快捷键
- Web获取客户端物理MAC地址(ocx插件)ActiveX控件
- oracle创建用户和密码以及授权登录问题
- 即将上线的YARN服务器面临的一系列填坑笔记
- MVVM双向绑定实现之Object.defineProperty
- Numpy 常用矩阵计算函数
- 关于使用AzureCli登陆提示SSLError的错误解决方案
- Echarts使用小结
- linqtosql 实现数据分页
- MyEclipse发布按钮无效的办法
- 【转】android 常用theme
- HTML5API(5)
- SQL server 数据库 操作及简单查询
- python导包学习总结
- 倍福TwinCAT(贝福Beckhoff)基础教程4.2 TwinCAT如何读写CSV文件
热门文章
- 深入理解Redis高可用方案-Sentinel
- ESP8266-Arduino杀手?
- 朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)
- python-Selenium库的详解
- H5 35-背景平铺属性
- Linux登录MySQL时出现 Can&#39;t connect to local MySQL server through socket &#39;/tmp/mysql.sock&#39;解决方法
- Django 中的Form表单认证
- JUnit的配置及使用
- IntelliJ IDEA/WebStrom破解及JDK配置
- springboot 整合spark-sql报错