C++基础的一些代码和笔记 stl乱炖
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乱炖的更多相关文章
- TERSUS无代码开发(笔记01)-按装下载和基础语法
1.中国官网 https://tersus.cn/ 2.下载:https://tersus.cn/download/ 3.开发文档:https://tersus.cn/docs/ 4.基本元件说明 图 ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- 《linux 内核全然剖析》sched.c sched.h 代码分析笔记
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011368821/article/details/25129835 sched.c sched.h ...
- MySQL基础之事务编程学习笔记
MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...
- TERSUS无代码开发(笔记02)-简单实例加法
简单实例加法 1.用户端元件(显示元件)(40个) 图标 英文名称 元件名称 使用说明 服务器端 客户端 Pane 显示块 是一个显示块,是HTML的div标签 √ Row 行 行元件中的显示元件 ...
- Java基础技术JVM面试【笔记】
Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管 ...
- java基础技术集合面试【笔记】
java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- Linux协议栈代码阅读笔记(二)网络接口的配置
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...
随机推荐
- matplotlib 中的一些参数设置
首先:在pycharm 中要使图显示出来,最后一定要加上 plt.show(),如: plt.bar(x, y) plt.show() 下面就是我使用 matplotlib 遇到的一些常用参数设置: ...
- ubuntu 下python出现pkg: error processing package *python* 解决之道
1.linux有些自带程序很多是python写的,自带的python2也最好不要升级,不然会有很多问题 2.如果遇到 pkg: error processing package *python* (- ...
- 老板说,Vim宏都不会用,你的工作效率太低啦~
工作中,对于文本文件的编辑我们经常有这样的需求: 多次重复输入一段相同文本: 生成一段序列化的文本: 每行文本插入一句相同的文本. 除此之外,还有很多需要重复操作的动作.对于这些需求,如果我们人工去操 ...
- css网页重置样式表(多版本)
Eric reset.css html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ...
- 解决python3使用cx_Freeze打包成exe后不能运行
我使用的是python3.4,在使用cx_Freeze打包成exe后发现有些打包后程序能够运行,但是有些无法运行 这是控制台报错 经过多方查找发现原来是windows缺少一些python的扩展包 如下 ...
- TortoiseGit 与 Putty 配置冲突导致 Server refuse our key
tortoisegit是TortoiseSVN的Git版本,tortoisegit用于迁移TortoiseSVN到TortoiseGit,一直以来Git在Windows平台没有好用GUI客户端,现在t ...
- 不同label样本画图——颜色分配plt.cm.Spectral
不同label样本画图——颜色分配plt.cm.Spectralhttps://blog.csdn.net/wang_zuel/article/details/102940092 关于plt.cm.S ...
- Building Applications with Force.com and VisualForce(Dev401)(十三):Implementing Business Processes:Automating Business Processes Part II
ev401-014:Implementing Business Processes:Automating Business Processes Part II Module Agenda1.Multi ...
- TensorFlow v2.0实现逻辑斯谛回归
使用TensorFlow v2.0实现逻辑斯谛回归 此示例使用简单方法来更好地理解训练过程背后的所有机制 MNIST数据集概览 此示例使用MNIST手写数字.该数据集包含60,000个用于训练的样本和 ...
- 美国NOAA/AVHRR遥感数据
1.美国国家海洋和大气管理局(National Oceanic and Atmospheric Administration,NOAA) 美国国家海洋和大气管理局隶属于美国商业部下属的科技部门,主要关 ...