第十四周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/ ...
随机推荐
- 分享一款知识库平台系统-wcp
入园这么些天了,今天搭建了一套知识库系统,使用效果还不错,分享一些过程经验. 搭建准备: 软件系统:WCP4.3免费版 (免费开源,支持Windows,使用简单,有傻瓜式一键安装包-win平台) 服务 ...
- codewars贪吃蛇算法题目
有这样一个题目: Given an n x n array, return the array elements arranged from outermost elements to the mid ...
- 小程序mpvue中flyio的使用方法
Fly.js 一个基于Promise的.强大的.支持多种JavaScript运行时的http请求库. 有了它,您可以使用一份http请求代码在浏览器.微信小程序.Weex.Node.React Nat ...
- WebLogic12C安装配置文档
jdk版本:1.8; jdk安装路径不准有空格 JDK安装: jdk版本:1.8; jdk安装路径不准有空格 WebLogic安装: 解压安装包 解压JAR 找到fmw_12.2.1.3.0_wls\ ...
- InnoDB 引擎中的索引类型
首先索引是一种数据结构,并且索引不是越多越好.合理的索引可以提高存储引擎对数据的查询效率. 形象一点来说呢,索引跟书本的目录一样,能否快速的查找到你需要的信息,取决于你设计的目录是否合理. MySQL ...
- 出现jupyter notebook password or token提示需要token的处理方法
很多朋友不知道下面的情况怎么处理,我给大家介绍一个方法! 出现这种情况很简单用下面这个地址就能进去了 (注意是你自己的 不是我这个)
- get_started_3dsctf_2016
题外:这道题不是很难,但是却难住了我很久.主要是在IDA中查看反编译出的伪代码时双击了一下gets()函数,结果进入gets函数内部,我当时就懵了,误以为这是一个自定义函数,但是自定义函数应该应该不能 ...
- openwrt 单网卡路由模拟实现
关键字 vlan openwrt 单臂路由 一直以来都认为路由器要至少要求是双网卡,因为至少要有lan/wan.最近看了单臂路由的介绍,自己在虚拟机测试了一把,发现单网口做路由器确实可行! 测试环境 ...
- JUC使用
1.什么是JUC 源码 + 官方文档 面试高频问! java.util 工具包.包.分类 业务:普通的线程代码 Thread Runnable 没有返回值.效率相比入 Callable 相对较低! 2 ...
- Axios源码深度剖析
Axios源码深度剖析 - XHR篇 axios 是一个基于 Promise 的http请求库,可以用在浏览器和node.js中,目前在github上有 42K 的star数 分析axios - 目录 ...