C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】

编辑点评:模板库和代码整合下载

csdn上面人气非常高的一款标准模板库pdf文件和自己整理的C++ STL代码,非常的详细,现在整合一起免费分享给需要的朋友,直接复制代码操作,很简单。

C++标准模板库pdf

c++标准模板库pdf目录介绍

1STL简介

2顺序性容器

2.1C++VECTOR(向量容器)

2.2C++LIST(双向链表)

2.3C++DEQUE(双向队列).

2.4三者比较

3关联容器

3.1特点

3.2C++SETS&MULTISETS

3.3C++MAPS&MULTIMAPS

4容器适配器

4.1特点.

4.2C++STACKS(堆栈)

4.3C++QUEUES(队列)

4.4C++PRIORITYQUEUES(优先队列)

5迭代器

5.1解释.

5.2功能特点

6C++标准库总结.

6.1容器

6.2算法.

6.3函数对象

6.4迭代器

6.5分配器

6.6数值

c++标准模板库pdf图片预览

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(1)

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(2)

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(3)

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(4)

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(5)

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(6)

C++标准模板库(STL)和容器介绍

1、什么是标准模板库(STL)?

(1)C++标准模板库与C++标准库的关系

C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是

类模板,我们可以调用这些模板来定义一个具体的类;与之前的自己手动创建一个函数模版或者是类模板不一样,我们使用了

STL就不用自己来创建模板了,这些模板都定义在标准模板库中,我们只需要学会怎么使用这些类模板来定义一个具体的类,

然后能够使用类提供的各种方法来处理数据。

(2)STL六大组件:容器(containers)、算法(algorithms)、迭代器(iterators)、函数对象(functors)、适配器(adapters)、分配器(allocators)

2、迭代器

迭代器是一种对象,它能够用来遍历STL容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址,所以可以认为迭代器其实就是用来指向容器中数

据的指针,我们可以通过改变这个指针来遍历容器中的所有元素。

3、容器

首先,我们必须理解一下什么是容器,对比我们生活当中的容器,例如水杯、桶、水瓶等等这些东西,其实他们都是容器,他们的一个共同点就是:都是用来

存放液体的,能够用来存放一些东西;其实在我们的C++中说的这个容器其实作用也是用来存放"东西",但是存放的是数据,在C++中容器就是一种用来存放

数据的对象。

(1)C++中的容器其实是容器类实例化之后的一个具体的对象,那么可以办这个对象看成就是一个容器。

(2)因为C++中容器类是基于类模板定义的,也就是我们这里说的STL(标准模板类)。为什么需要做成模板的形式呢?因为我们的容器中存放的数据类型其实是相同的,如果就因为数据类型不同而要定义多个具体的类,这样就不合适,而模板恰好又能够解决这种问题,所以C++中的容器类是通过类模板的方式定义的,也就是STL。

(3)容器还有另一个特点是容器可以自行扩展。在解决问题时我们常常不知道我们需要存储多少个对象,也就是说我们不知道应该创建多大的内存空间来存放我们的数据。显然,数组在这一方面也力不从心。容器的优势就在这里,它不需要你预先告诉它你要存储多少对象,只要你创建一个容器对象,并合理的调用它所提供的方法,所有的处理细节将由容器来自身完成。它可以为你申请内存或释放内存,并且用最优的算法来执行您的命令。

(4)容器是随着面向对象语言的诞生而提出的,容器类在面向对象语言中特别重要,甚至它被认为是早期面向对象语言的基础。

4、容器的分类

STL对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。

我想说的是对于上面的每种类型的容器到底是是什么意思,其实没必要去搞懂,没什么价值,只要你能够大概理解知道即可,知道每种容器类型下有哪些具体的容器即可。

顺序性容器:vector、deque、list

关联性容器:set、multiset、map、multimap

容器适配器:stack、queue、

本文主要介绍vector、list和map这3种容器。

5、vector向量

vector向量是一种顺序行容器。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector看作动态数组。

在创建一个vector后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector默认指定。当存储的数据超过分配的空间时vector会重新分配一块内存块,但这样的分配是很耗时的,在重新分配空间时它会做这样的动作:

首先,vector会申请一块更大的内存块;

然后,将原来的数据拷贝到新的内存块中;

其次,销毁掉原内存块中的对象(调用对象的析构函数);

最后,将原来的内存空间释放掉。

当vector保存的数据量很大时,如果此时进行插入数据导致需要更大的空间来存放这些数据量,那么将会大大的影响程序运行的效率,所以我们应该合理的使用vector。

(1)初始化vector对象的方式:

vector<T>v1;//默认的初始化方式,内容为空

vector<T>v2(v1);//v2是v1的一个副本

vector<T>v3(n,i)//v3中包含了n个数值为i的元素

vector<T>v4(n);//v4中包含了n个元素,每个元素的值都是0

(2)vector常用函数

empty():判断向量是否为空,为空返回真,否则为假

begin():返回向量(数组)的首元素地址

end():返回向量(数组)的末元素的下一个元素的地址

clear():清空向量

front():返回得到向量的第一个元素的数据

back():返回得到向量的最后一个元素的数据

size():返回得到向量中元素的个数

push_back(数据):将数据插入到向量的尾部

pop_back():删除向量尾部的数据

…..

(3)遍历方式

vector向量支持两种方式遍历,因为可以认为vector是一种动态数组,所以可以使用数组下标的方式,也可以使用迭代器。

STL代码分享

priority_queue高优先级先删掉

stack先进后出。

queue先进先出。

STL函数描述

c1.swap(c2)交换两个容器c1和c2中的元素

c.max_size()返回一个容器可容纳的最大元素数目

c.clear()删除容器中的所有元素

c.begin()返回容器首元素的迭代器

c.end()返回容器首元素的迭代器

c.rbegin()返回容器尾元素的迭代器,用于逆序遍历

c.rend()返回容器首元素之前的位置的迭代器

c.erase(beg,end)删除容器中从beg到end-1之间的元素。beg和end都是迭代器。

#include<iostream>

#include<vector>

#include<list>

#include<deque>

#include<set>

#include<stack>

#include<queue>

usingnamespacestd;

intmain()

{

vector<int>vector1,vector2;

list<int>list1,list2;

deque<int>deque1,deque2;

set<int>set1,set2;

multiset<int>multiset1,multiset2;

stack<int>stack1,stack2;

queue<int>queue1,queue2;

cout<<"vector:"<<endl;

vector1.push_back(1);

vector1.push_back(2);

vector2.push_back(30);

cout<<"sizeofvector1:"<<vector1.size()<<endl;

cout<<"sizeofvector2:"<<vector2.size()<<endl;

cout<<"maximumsizeofvector1:"<<vector1.max_size()<<endl;

cout<<"maximumsizeofvector2:"<<vector2.max_size()<<endl;

vector1.swap(vector2);//c1.swap(c2)交换两个容器c1和c2中的元素。

cout<<"sizeofvector1:"<<vector1.size()<<endl;

cout<<"sizeofvector2:"<<vector2.size()<<endl;

cout<<"vector1<vector2"<<(vector1<vector2)<<endl<<endl;

C++标准模板库pdf截图

C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(7)C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(8)C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(9)C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(10)C++标准模板库电子版+STL代码下载-C++标准模板库pdf高清无水印版【附自己整理的代码STL】插图(11)

评分及评论

无用户评分

来评个分数吧

  • 5 分
    0
  • 4 分
    0
  • 3 分
    0
  • 2 分
    0
  • 1 分
    0

Comments