第十四周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/ ...
随机推荐
- 支付-微信h5
背景 h5支付分两种 1.浏览器 2.app 浏览器里的h5,最终也会跳转到app. 而app里的h5,本质是公众号.在微信里叫公众号,支付宝叫服务窗. 这里主要讲微信h5. 核心原理 最终目标是下单 ...
- vue实现侧边导航栏
<div class="sidebar"> <el-menu class="sidebar-el-menu" :default-active= ...
- 使用java.io.RandomAccessFile更改文本文件的内容
原文本内容: 2020-01-21 08:31:08.520 [main] INFO logbackCfg.App -秦时明月汉时关 2020-01-21 08:31:08.521 [main] ER ...
- Eclipse中java文件边的黄色数据库标志变成了蓝色小勾,导致文件修改后无法显示在Git staging窗口中,修改无法提交,怎么解决?
出现这个问题的原因是误点击了右键点文件->Team->Advanced->Assume Unchanged, 导致结果是文件修改了无法显示在Git staging窗口中,自然无法提交 ...
- Linux下mysql安装记录
1.MySQL下载路径:https://dev.mysql.com/downloads/ Linux下的安装步骤:http://www.runoob.com/linux/mysql-install-s ...
- 详解JVM中的内存模型是什么?
强烈推荐 不管是找工作还是提升水平,都建议读一下<深入理解Java虚拟机>这本书,详细讲解了JVM中的内存管理.类加载过程.垃圾回收以及最重要的性能调优实战. 本博客也是参考了这本书,有不 ...
- CSS的坑
如何触发 bfc 规则 浮动元素:float 除 none 以外的值 绝对定位元素:position (absolute.fixed) display 为 inline-block.table-cel ...
- Fiddler的基本界面介绍
前言 fiddler的界面,主要是分以下6个模块. 一:主菜单栏: 可以参考:https://www.cnblogs.com/sjl179947253/p/7620524.html 二:工具栏: 1. ...
- 使用 usbmon 抓取 usb 总线上的数据
使用 usbmon 抓取 usb 总线上的数据 usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具.usbmon 本质是一个内核模块,在我的 ubuntu14.0 4中 ...
- [LeetCode]面试题62. 圆圈中最后剩下的数字(数学)
题目 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删除第3 ...