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 ...
随机推荐
- 微信小程序api封装
写多 之后,吸取之前的经验,瞎写了一个简单的封装api,有幸看到的朋友,就随便看看哈,如果能给到你帮助就一直棒了,额呵呵呵! 新建constant.js和api.js文件 在constant.js中统 ...
- Contest 161
2019-11-03 20:35:18 总体感受:本周的赛题完全是反过来的,第一题最难,第二题次之,最后的hard反而是最简单的. 注意点:心态放平稳,慢慢来.
- 2,MapReduce原理及源码解读
MapReduce原理及源码解读 目录 MapReduce原理及源码解读 一.分片 灵魂拷问:为什么要分片? 1.1 对谁分片 1.2 长度是否为0 1.3 是否可以分片 1.4 分片的大小 1.5 ...
- 深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝
JavaScript中的浅拷贝与深拷贝 学了这么长时间的JavaScript想必大家对浅拷贝和深拷贝还不太熟悉吧,今天在项目中既然用到了,早晚也要理清一下思路了,在了解之前,我们还是先从JavaSc ...
- PHP7内核(六):变量之zval
记得网上流传甚广的段子"PHP是世界上最好的语言",暂且不去讨论是否言过其实,但至少PHP确实有独特优势的,比如它的弱类型,即只需要$符号即可声明变量,使得PHP入手门槛极低,成为 ...
- arcgis server建完站点之后修改默认6080端口号
1.首先找到arcgis server的安装路径,找到server.xml文件,修改其中一处的6080端口为你想更改的端口号,例如8888.具体操作如下图所示: 默认的安装路径为:D:\Program ...
- coding++:Spring中的@Transactional(rollbackFor = Exception.class)属性详解
异常: 如下图所示,我们都知道 Exception 分为 运行时异常 RuntimeException 和 非运行时异常. error 是一定会回滚的. 如果不对运行时异常进行处理,那么出现运行时异常 ...
- 将图片base64格式转换为file对象并读取(两种方式读取)
两种方式读取,一种URL.createObjectURL,另一种fileReader var base64 = ` data:image/jpeg;base64,/9j/4AAQSkZJRgABA ...
- 使用SpringCloud将单体迁移至微服务
使用SpringBoot构建单体项目有一段时间了,准备对一个老项目重构时引入SpringCloud微服务,以此奠定后台服务能够应对未知的业务需求. 现在SOA架构下的服务管理面临很多挑战,比如面临一个 ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之七(四十三)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...