第十四周C++学习总结
- 类模板使用方法:类模板名 <数据类型> 对象名;
- C++有个标准模板库(STL)(standard template library),编程时使用它会提高程序的可靠性。
- Stl 包含了(容器,算法,迭代器)
- 容器:容纳,包含相同元素的对象,主要用类模板实现,
序列型容器: vector 向量
List 双向链表
Deque 双端队列
关联型容器: map 映射
Set 集合
容器适配器: stack 栈
Queue 队列 - 迭代器: 是用于确定元素位置的数据类型,可用来遍历容器中的元素
通过迭代器可以读取、修改它指向的元素,它的用法和指针
类似
每一种容器都定义了一种迭代器
定义容器类迭代器的方法:
容器类名 <元素类型> :: iterator 变量名
例: vector :: iterator it;
访问迭代器指向的元素: *it = 5; - 算法:
<1>由许多函数模版组成的集合,实现了大量通用算法,用于操控各种容器
<2>STL中提供的算法涉及到:比较、交换、查找、遍历、复制、修改、移除、反转、排序、合并等。大约有
<3>70种标准算法算法通过迭代器来操纵容器中的元素 - vector 向量
vector主要特征
<1>vector实际上就是对动态数组封装可以像数组一样可以使用下标访问元素,若vector长度为n ,则其下标为0~n-1
<2>根据下标访问元素效率高
<3>vector对象的空间随着插入删除操作自动调整因为空间自动调整比较耗费时间,因此频繁插入删除的情况下, vector效率稍差 - vector创建int型空向量
vector v1;
vector v2(v1); //表示将v1复制到v2。
vector s2( 10 ); //创建10个元素的向量
vector v3( 10, 1.5 ); //创建10个元素都是1.5的向量
vector *pvec = new vector (10, -5 ); //创建向量指针 - push_back函数,用于向向量的尾部添加元素
使用pop_ back()删除最后一个元素
Insert函数示例代码
vector v1;
v1.push_ back(1);
v1.push_ back(2);
v1.insert(v1.begin() , 0); //头部插入
v1.insert(v1.end() , 4);//尾部插入,4为插入的值
v1.insert(v1.end()-1 , 3); //倒数第二位置
return 0;
erase函数示例代码
vl.erase(v1.begin()); //删除0
vl.erase(v1.begin(), v1.end()); //全删 - vector——向量大小相关函数
v.size() 返回向量的大小
v.max_ size() 返回向量可容纳的最大个数
v.empty() 返回向量是否为空
v.resize(n) 调整向量大小,使其可以容纳n个元素,如果n<v.size(),则删除多出来的元素;否则,添加新元素
v.resize(n,t) 调整向量的大小,使其可以容纳n个元素,所有新添加的元素初始化为t
v.capacity() 获取向量的容量,再分配内存空间之前所能容纳的元素个数 - vector迭代器:
迭代器定义:vector :: iterator it; 跟指针十分相似。 - 以迭代器为参数的插入删除函数
v.insert(p,t) 在迭代器p所指向的元素前面插入值为t的元素
v.insert(p,n,t) 在迭代器p所指向的元素前面插入n个值为的新元素
v.insert(p,b,e) 在迭代器p所指向的元素前面插入迭代器b和e标记的范围内的元素
v.erase(p) 删除迭代器p指向的容器中的元素
v.erase(b,e) 删除迭代器b和e所标记范围内的元素 - 使用迭代器循环删除会出现错误,
解决办法
在C++11标准中, erase()会返回- -个iterator ,这个iterator指向了 "当前删除元素的后继元素” - map
map创建及添加元素
map类定义在头文件中
创建map对象: map <int, string> StuInfo;
这就定义了-一个用int作为键,相关联string为值的map
插入pair对象: pair <int, string> mypair(1, "Tom");
StuInfo.insert(mypair);
或 StuInfo.insert(pair <int, string> (5, "Jack' ));
键不可修改,只能修改值。
第十四周C++学习总结的更多相关文章
- 201521123061 《Java程序设计》第十四周学习总结
201521123061 <Java程序设计>第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据 ...
- 201521123072《java程序设计》第十四周学习总结
201521123072<java程序设计>第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库 ...
- 201521123038 《Java程序设计》 第十四周学习总结
201521123038 <Java程序设计> 第十四周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 接口: DriverManager ...
- 201521123122 《java程序设计》第十四周学习总结
## 201521123122 <java程序设计>第十四周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. M ...
- 杨其菊201771010134《面向对象程序设计(java)》第十四周学习总结
第十四周学习总结 第一部分:理论知识 理论知识:本周学习Swing用户界面 内容:Swing与模型-视图-控制器设计模式:布局管理概述:文本输入 :选择组件:菜单:复杂的布局管理:对话框: 第二部分: ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十四周
java学习第十四周 本周,主要精力放在了第十二章swing用户界面组件知识的学习,swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨 ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十四周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第十四周学习总结 实验十二 Swing图形界面组件(一) 实验时间 2019-11-29 第一部分:基础知识总结 1.设计 ...
- 201271050130-滕江南-《面向对象程序设计(java)》第十四周学习总结
201271050130-滕江南-<面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnbl ...
- 201871010104-陈园园 《面向对象程序设计(java)》第十四周学习总结
201871010104-陈园园 <面向对象程序设计(java)>第十四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
随机推荐
- 分布式文件存储:FastDFS简单使用与原理分析
引言 FastDFS 属于分布式存储范畴,分布式文件系统 FastDFS 非常适合中小型项目,在我接手维护公司图片服务的时候开始接触到它,本篇文章目的是总结一下 FastDFS 的知识点. 用了 2 ...
- centos7图形化安装oracle11g
#设置主机名 hostnamectl set-hostname oracle #yum安装 yum -y install unzip vim* bash-completion bash-complet ...
- H5游戏定制,4大优势助力企业曝光10W+
H5游戏定制,4大优势助力企业曝光10W+ 移动互联网已成为了人们生活的一部分,普通广告形式已很难吸引用户的眼球,企业要怎样才能将广告更广泛的传播给更多用户呢?根据TOM游戏多年从业经验,为大家分享以 ...
- Python 字符串去除相邻重复的元素
1 def quchong(S): 2 str1=[""] 3 for i in S: 4 if i == str1[-1]: 5 str1.pop() 6 else: 7 str ...
- JavaScript 异步编程
博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程和异步编程 同步编程,计算机一行一行按顺序 ...
- Docker端口映射及创建镜像演示(二)
Docker暴露容器方法 第一种:将容器中的一个端口映射成宿主机中的一个随机端口 第二种:将容器中的一个端口映射成宿主机中的一个端口 第三种:将容器中的一个端口映射成宿主机中的一个特定网卡上的随机端口 ...
- python的循环结构
遍历循环 计数循环(N次)/(特定次)/字符串遍历循环 列表遍历循环/文件遍历循环......字典遍历循环等等 例子--计数循环 输出从1到6的整数,以2为步长 字符串遍历循环 列表遍历循环 文件遍历 ...
- docker的使用场景和背景了解
Docker的使用场景以及优缺点 https://blog.csdn.net/zhangdekui/article/details/81541519 浅析Docker容器的应用场景 https://w ...
- Netty之ChannelOption的各种参数
ChannelOption.SO_BACKLOG, 1024 BACKLOG用于构造服务端套接字ServerSocket对象,标识当服务器请求处理线程全满时,用于临时存放已完成三次握手的请求的队列的最 ...
- JAVA之代理2CGLib
对于CGLib的代理目前还是知道如何使用,以及理论上它的原理,到源码上的理解还没到位 https://www.jianshu.com/p/9a61af393e41?from=timeline& ...