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. SQL数据库-基本操作

    SQL教程 整理自:廖雪峰的官方网站-SQL教程 目录 SQL教程 SQL快捷键 1.概述 数据类型 SQL操作数据库的能力 语法特点 2. 安装MySQL 运行MySQL 3. 关系模型 3.1 概 ...

  2. 算法学习 八皇后问题的递归实现 java版 回溯思想

    1.问题描述 八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或 ...

  3. vue cli3配置开发环境、测试环境、生产(线上)环境

    cli3创建vue项目是精简版的少了build和config这2个文件,所以配置开发环境.测试环境.生产环境的话需要自己创建env文件. 需要注意2点: 1.cli2创建项目生成的config文件里的 ...

  4. NLPer,你知道最近很火的自然语言处理库么?

    介绍 "NLP's ImageNet moment has arrived." 想象一下我们有能力构建支持谷歌翻译的自然语言处理(NLP)模型,并且在Python中仅需几行代码来完 ...

  5. Flume数据采集结合etcd作为配置中心在爬虫数据采集处理中的架构实践。

    Apache Flume是一个分布式的.可靠的.可用的系统,用于有效地收集. 聚合和将大量日志数据从许多不同的源移动到一个集中的数据存储,但是其本身是以本地properties作为配置的,配置无法做到 ...

  6. Oracle 10g客户端的安装和配置

    1.双击Oracle11g_database安装目录下的Setup.exe. 2.选择“基本安装”,设置“安装位置”,填写“数据库名”和“口令”,点击“下一步”. 3.点击“下一步”. 4.一般会出现 ...

  7. Spring - 事务管理概述

      什么是事务管理? 第一个问题:什么是事务? 事务一般是相对数据库而言的,对于数据库一次操作就属于一个事务, 一次操作可以是几句 SQL 语句,也可以是若干行 JDBC 的 Java 语句.事务既然 ...

  8. k8s删除namespace一直处于terminating状态

    k8s删除namespace一直处于terminating状态 当遇到删除ns是一直处于terminating情况可以用调k8s api进行删除. 1.创建api proxy. [root@node1 ...

  9. linux 访问windows 共享文件

    用到的方法是 CIFS (Common Internet File System)windows自己的网络文件系统 操作系统: Linux为 debian. Windows 为 windows 8   ...

  10. A 组队参赛

    时间限制 : - MS   空间限制 : - KB  评测说明 : 1s,256m 问题描述 一年一度的ioiAKer大赛即将来临,何老板打算让信竞队的同学们组队参赛.信竞队共n名队员,他们的CF积分 ...