第十四周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/ ...
随机推荐
- 实战解读丨Linux下实现高并发socket最大连接数的配置方法
摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...
- Java实现打开google浏览器
说明: 博主的Google浏览器版本:75.0.3770.142,如果运行异常,需要自行查找对应版本的驱动(chromedriver.exe) 需要的jar包: https://pan.baidu.c ...
- Java格式化字符串Format
java的jdk1.5开始引用了对字符串的格式化处理,类似于C语言的printf("%d,%d",a,b);,对数据的处理非常方便,之所以有这样的方式输出,很多人说是为了抢夺C语言 ...
- 关于input框仿百度/google自动提示的方法
引入jquery-autocomplete文件 链接:https://pan.baidu.com/s/1hW0XBYH8ZgJgMSY1Ce6Pig 密码:tv5b $(function() { $( ...
- 使用阿里云OSS的服务端签名后直传功能
网站一般都会有上传功能,而对象存储服务oss是一个很好的选择.可以快速的搭建起自己的上传文件功能. 该文章以使用阿里云的OSS功能为例,记录如何在客户端使用阿里云的对象存储服务. 服务端签名后直传 背 ...
- thinkPHP5.1 MVC架构使用方法
MVC架构 1.M层:model(模型),是增强版的数据库 M层是用来存放自动完成代码.修改器(数据修改).模型事件.验证器 2.V层:view 显示视图 V层用来存放HTML.css.JavaScr ...
- oh-my-zsh超级终端
_ _ ___ | |__ _ __ ___ _ _ _______| |__ / _ \| '_ \ _____| '_ ` _ \| | | |____|_ / __| '_ \ | (_) | ...
- 想要搭建个论坛?Guide哥调研了100来个 Java 开源论坛系统,发现这 5 个最好用!
大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近有点小忙.但是,由于前几天答应了一位读者自己会推荐一些开源的论坛系统,所以,昨晚就简单地熬了个夜,对比了很多 ...
- 方法区(Method Area)基础知识
堆.栈.方法区堆关系 概述 方法区与堆区一样,是各个线程共享的内存区域 方法区在JVM启动时就会被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的 方法区的大小,跟堆空间一样,可以 ...
- 码云+Git配置仓库
版本库Git安装 概述 Git是一个开源的分布式控制系统,可以有效高速的处理从很小的到非常大的项目版本管理,是目前使用范围最广的版本管理工具. 下载安装 下载后傻瓜式一键安装,建议安装在英文目录下,安 ...