第十四周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/ ...
随机推荐
- 分布式ID方案SnowFlake雪花算法分析
1.算法 SnowFlake算法生成的数据组成结构如下: 在java中用long类型标识,共64位(每部分用-分开): 0 - 0000000000 0000000000 0000000000 000 ...
- Codeforces 1337C Linova and Kingdom
题意 给你一颗有根树,你要选择\(k\)个点,最大化\(\sum_{i \in S} val_i\),其中\(S\)是被选点的集合,\(val_i\)等于节点\(i\)到根的路径上未被选择点的个数. ...
- openresty(nginx+lua)初识
1.新增项目配置文件: vim /usr/example/example1.conf --将以下内容加入example1.conf server { listen 80; server_name _; ...
- Zabbix如何监控Linux防火墙服务
今天在巡检的时候,突然想到Zabbix能否监控Linux的防火墙服务呢? 显然是可以的,但是Zabbix 5下默认的模板"Template OS Linux by Zabbix agent& ...
- Zabbix如何解决“System time is out of sync (diff with Zabbix server > 60s)”告警
Zabbix如何解决"System time is out of sync (diff with Zabbix server > 60s)"这种告警呢? 这个错误对应的中文提 ...
- springboot x.x.x RELEASE不同版本的差异
springboot 1.x.x RELEASE的 application.properties配置 server.context-path=/ server.port=8080 server.ses ...
- 1. spring5源码 -- Spring整体脉络 IOC加载过程 Bean的生命周期
可以学习到什么? 0. spring整体脉络 1. 描述BeanFactory 2. BeanFactory和ApplicationContext的区别 3. 简述SpringIoC的加载过程 4. ...
- 痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加C++源文件进SDK工程编译的方法. 最近有客户反映在MCUXpresso IDE下的SDK工程里添加 ...
- Mybatis 注解形式
1.查询 // 查询 @Select("select id, name, type, numbers, cancelled, completed, percentage from c ...
- python语句与函数
赋值语句 : 分支语句 : 函数 :根据输入参数产生不同输出功能 程序的输入与输出 input() 从控制台获得用户输入的函数 使用格式 print()函数 以字符形式向控制台输出结果的函数 字符类型 ...