STL

标准模板库。各种函数的模板和类的模板
几个概念:
容器:可容纳各种数据类型的通用数据结构,是类模板。
迭代器:可用于依次存取容器中的元素,类似于指针,用iterator来进行对一个容器中单个元素的访问。
算法:用来操作容器中的元素的函数模板。

容器分类:都必须调用同名的头文件
(1)顺序容器:
vector,向量容器,deque双向队列,list双向链表
(2)关联容器:
set集合,multiset(允许出现重复的集合),map映射,multimap多重映射(可以两个自变量函数值相同)
(3)容器适配器
stack栈,queue队列,priority_queue优先队列
顺序容器:元素插入和元素本身无关,即不会进行自动排序。
关联容器:元素是排序的,在查找时有很好的性能,一般都用平衡二叉树实现,map的元素对象有且只有两个成员变量一个叫first一个叫second,根据first来排序。
容器适配器:
栈filo,队列fifo,分别需要使用头文件<stack> 和<queue>

顺序容器中的方法:
front返回容器中第一个元素的引用
back返回容器最后一个元素的引用
push_back在容器末尾增加一个元素
pop_back删除容器末尾的一个元素
erase 删除迭代器指向的元素(可能使得迭代器失效,)也可以删除容器中一段长度的区间,返回被删除元素后面的那个迭代器。

顺序容器和关联容器中都有的方法:
begin 返回指向容器中第一个元素的迭代器(而不是下标!!)
end 返回指向容器中最后一个元素后面的位置的迭代器
rbegin 返回指向容器中最后一个元素的迭代器(和end差一位哦)
rend 返回指向容器第一个元素前面的位置的迭代器
erase, 从容器中删除一个或者几个元素
clear 从容器中删除所有元素

iterator:
有const和非const两种,const不可以修改指向的内容
双向迭代器(==,!=,++,--)
随机访问迭代器(+,+=,-,-=,<,>,<=,>=,和双向迭代器所有的操作符)

vector实现二维数组:
用vector套vector的方法,vector<vector<int> > m(3);

vector有的方法deque都有,不过还有push_front,pop_front.

若一个类重载了(),则该类的对象就是函数对象。

在进行将一个容器的一部分复制到另一个容器或者自己的另一个部分时,一般选用从末尾开始向前复制,比如要移动一个容器中的一部分(为了避免出现覆盖),有的可能想要先复制这一部分到另一个temp数组然后再贴回原容器,但是不如直接从后向前倒退着复制(即要贴的部分相对于原容器有效的内容要靠后一些,如果靠前则相反,)这样减少了计算的时间复杂度和空间复杂度.
functional和algorithm头文件中有greater和less,是函数模板,greater判断是不是左大于右,less相反。模板函数实例化的时候必须传入参数,比如greater<double>()//()千万不能忘记这是一个函数而不是函数对象!!!!!!!!经常在容器内部排序中使用。

algorithm中的unique函数是一个去重函数,去除相邻的重复元素,而且删除没有把重复元素删除,只不过全部放在数组的后面,所以要注意使用unique函数之前需要先对数组进行排序!!!!!!!
unique也并不会改变容器本身的大小,它的返回值是一个指向最后一个被“删除”的元素的迭代器,也就是返回的迭代器到容器最后的end()都是重复的元素,如果真的要删除就需要再删除(erase函数)。
list中的unique也是需要先排序再删除,同时注意list中unique会销毁重复的元素。
关联容器:
内部已经排好序的容器,在插入的时候就进行排序,同时注意这里判断相等是使用互相满足不小于的。

C++基础的一些代码和笔记 stl乱炖的更多相关文章

  1. TERSUS无代码开发(笔记01)-按装下载和基础语法

    1.中国官网 https://tersus.cn/ 2.下载:https://tersus.cn/download/ 3.开发文档:https://tersus.cn/docs/ 4.基本元件说明 图 ...

  2. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  3. 《linux 内核全然剖析》sched.c sched.h 代码分析笔记

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011368821/article/details/25129835 sched.c sched.h ...

  4. MySQL基础之事务编程学习笔记

    MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...

  5. TERSUS无代码开发(笔记02)-简单实例加法

    简单实例加法 1.用户端元件(显示元件)(40个) 图标 英文名称 元件名称 使用说明 服务器端 客户端 Pane 显示块 是一个显示块,是HTML的div标签   √ Row 行 行元件中的显示元件 ...

  6. Java基础技术JVM面试【笔记】

    Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管 ...

  7. java基础技术集合面试【笔记】

    java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...

  8. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  9. Linux协议栈代码阅读笔记(二)网络接口的配置

    Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...

随机推荐

  1. 【面试QA-基本模型】LSTM

    目录 为什么传统 CNN 适用于 CV 任务,RNN 适用于 NLP 任务 RNN 原理 LSTM 原理 GRU 原理 RNN BPTT LSTM 如何解决 RNN 的梯度消失问题 怎样增加 LSTM ...

  2. 第十周Java实验作业

    实验十  泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型,就是在定义类,接口和方法时,通过类型参数只是将要处理的类型对象.(如Arra ...

  3. 李瑞红 201771010111《面向对象程序设计(java)》第一周学习总结

    李瑞红 201771010111<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.c ...

  4. Contest 154

    2019-09-16 17:22:28 总体感受:这次比赛的模版题也太多了吧,两条模版题没有想出来.总的来说,还是自己的刷题量还是严重的不够. 注意点: 1)提升刷题量和覆盖率非常重要: 2)在碰到大 ...

  5. 搭建Hadoop集群需要注意的问题:

    搭建Hadoop集群需要注意的问题: 1.检查三台主机名是否正确 2.检查三台IP是否正确 3.检查 /etc/hosts 映射是否正确 4.检查 JDK和Hadoop 是否安装成功(看环境变量配置) ...

  6. Vmware15.5安装与许可教程

    最近Windows总是提醒我1803版本的服务即将过期,劝我升级到最新版.可我在自动安装的过程中却总是安装失败.于是官网下载了更新助手.检测到的问题是升级过程和 Vmware 软件冲突,于是卸载了 V ...

  7. 原 c++中map与unordered_map的区别

    c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...

  8. js之for与forEach循环的区别

    回武汉打卡第四天,武汉加油,逆战必胜!今天咱们探讨一下for循环和forEach()循环的区别. 首先,for循环在最开始执行循环的时候,会建立一个循环变量i,之后每次循环都是操作这个变量,也就是说它 ...

  9. ANTLR随笔(二)

    安装ANTLR 作者的电脑是MAC的操作系统macOS Catalina 10.15.2. 安装步骤后linux操作的系统的一样, Windows系统大致步骤一样,但是环境变量等配置有差别,作者很久没 ...

  10. 逍遥云天 H5外部浏览器直接调起微信——通过url协议 weixin:// 判断是否安装微信及启动微信

    h5分享到微信,h5使用微信支付这些功能,都需要先判断是否安装微信客户端,如果已安装就启动微信,如果没有安装微信,就提示用户前去安装. 我们可以通过访问微信提供的URL协议(weixin://)来实现 ...