第一百二十二天学习记录:C++提高:STL-vector容器(上)(黑马教学视频)

vector基本概念

功能:
vector数据结构和数组非常相似,也称为单端数组
vector与普通数组区别:
不同之处在于数组是静态空间,而vector可以动态扩展
动态扩展:
并不是在原空间之后续接新的空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
在这里插入图片描述
vector容器的迭代器是支持随机访问的迭代器

vector构造函数

功能描述:
创建vector容器

函数原型:

vector<T> v;						//采用模板实现类实现,默认构造函数
vector(v.begin(),v,end());		//将v[begin(),end())区间中的元素拷贝给本身
vector(n,elem);                    //构造函数将n个elem拷贝给本身
vector(const vector & vec); //拷贝构造函数
#include<iostream>
using namespace std;
#include<vector>void printVector(vector<int>& v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}//vector容器构造
void test01()
{vector<int> v1; //默认构造 无参构造for (int i = 0; i < 10; ++i){v1.push_back(i);}printVector(v1);vector<int>::iterator it1 = v1.begin();it1 += 2;//通过区间方式进行构造vector<int> v2(v1.begin(), it1);//0 1printVector(v2);//n个elem方式构造vector<int>v3(10, 100);printVector(v3);//拷贝构造vector<int> v4(v3);printVector(v4);
}int main()
{test01();return 0;
}

在这里插入图片描述
总结:vector的多种构造方式没有可比性,灵活使用即可。

vector赋值操作

功能描述:
给vector容器进行赋值
函数原型:
vector& operator=(const vector &vec);//重载等号操作符
assign(beg,end);//将[beg,end]区间中的数据拷贝赋值给本身。
assign(n,elem);//将n个elem拷贝赋值给本身。

#include<iostream>
using namespace std;
#include<vector>void printVector(vector<int>& v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}
//vector赋值
void test01()
{vector<int>v1;for (int i = 0; i < 10; i++){v1.push_back(i);}printVector(v1);//赋值 operator=vector<int>v2;v2 = v1;printVector(v2);//赋值 assignvector <int>v3;v3.assign(v1.begin(), v1.end());printVector(v3);//n个elem方式赋值vector<int>v4;v4.assign(10, 100);printVector(v4);
}int main()
{test01();return 0;
}

在这里插入图片描述
总结:vector赋值方式比较简单,使用operator=,或者assign都可以

vector容量和大小

功能描述:
对vector容器的容量和大小操作
函数原型:
empty();//判断容器是否为空
capacity();//容器的容量
size();//返回容器中元素的个数
resize(int num);//重新制定容器的长度为num,若容器变长,则以默认值(0)填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
resize(int num,elem);//重新制定容器的长度为num,若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。

#include<iostream>
using namespace std;
#include<vector>void printVector(vector<int>& v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}
//vector容器的容量和大小操作
void test01()
{vector<int>v1;for (int i = 0; i < 10; i++){v1.push_back(i);}printVector(v1);if (v1.empty())//为真 代表容器为空{cout << "v1为空" << endl;}else{cout << "v1不为空" << endl;cout << "v1的容量为:" << v1.capacity() << endl;cout << "v1的大小为:" << v1.size() << endl;}//重新指定大小v1.resize(15);printVector(v1);//如果重新指定的比原来长了,默认用0填充新的位置v1.resize(20,33);printVector(v1);v1.resize(5);printVector(v1);v1.resize(20);printVector(v1);
}int main()
{test01();return 0;
}

在这里插入图片描述
总结:
1、判断是否为空 empty
2、返回元素个数 size
3、返回容器容量 capacity
4、重新指定大小 resize

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/23472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国政府版 Windows 10 开发完成,即将大规模推广

早在今年 3 月 20 日&#xff0c;就有媒体曝光中国政府专用 Windows 10 已经完成第一版。而就在今天微软在上海举办的发布会中&#xff0c;微软再次透露了中国政府版 Windows 10 的最新情况——已经开始试点测试。这就意味着政府版 Windows 10 或很快大规模推广。 据了解&#…

基于Dockerfile构建镜像应用

目录 一、镜像概述 二、镜像构建方式 三、镜像构建案例 3.1、基于已有容器创建镜像 3.2、基于本地模板创建镜像 3.3、基于Dockerfile构建镜像 3.3.1、Docker 镜像结构 3.3.2、Dockerfile介绍 3.3.3、Dockerfile详解 3.3.4、Dockerfile构建SSHD镜像 3.3.5、Dockerfile…

clickhouse断电重启故障解决方案

业务场景 公司的一个日志系统用到了clickhouse。一线运维反映说有个生产环境因为异常断电造成服务器重启。在执行日志系统的启动脚本时&#xff0c;一直报clickhouse启动不起来&#xff0c;日志系统无法使用。 问题排查 通过阅读启动脚本代码&#xff0c;以及启动日志系统&a…

1.1k star,推荐一款程序员摸鱼神器

如果你在搬砖的过程中&#xff0c;想要看书、听歌、看图、看漫画等等&#xff0c;那么我建议你看下这个软件&#xff0c;之前也有推荐过&#xff0c;目前新的版本功能做了完善。 不过有个尴尬的点就是&#xff0c;作者增加了会员功能&#xff0c;但是对于基本使用还是没问题的…

react ant add/change created_at

1.引入ant的 Table import { Table, Space, Button, message } from antd; 2.获得接口的数据的时候增加上创建时间 const response await axios.get(${Config.BASE_URL}/api/v1/calculation_plans?token${getToken()});if (response.data.message ok) {const data respon…

Go学习第五天

Golang中面向对象类的表示与封装 package mainimport "fmt"// 如果类名首字母大写&#xff0c;表示其他包也能够访问 type Hero struct {// 如果类的属性首字母大写&#xff0c;表示该属性是对外能够访问的&#xff0c;否则的话只能够类的内部访问Name stringAd …

安全文件传输的重要性及其对企业的影响

在当今的信息时代&#xff0c;企业之间的文件传输已经成为日常工作的重要组成部分。无论是在商务合作、人力资源还是财务审计等方面&#xff0c;文件传输都发挥着关键的作用。然而&#xff0c;随着网络技术的发展&#xff0c;网络安全问题也日益突出&#xff0c;泄漏、篡改、丢…

SpringBoot之Actuator基本使用

SpringBoot之Actuator基本使用 引入分类常用接口含义healthbeansconditionsheapdumpmappingsthreaddumploggersmetrics 引入 <!-- actuator start--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

webpack基础知识四:说说webpack中常见的Plugin?解决了什么问题?

一、是什么 Plugin&#xff08;Plug-in&#xff09;是一种计算机应用程序&#xff0c;它和主应用程序互相交互&#xff0c;以提供特定的功能 是一种遵循一定规范的应用程序接口编写出来的程序&#xff0c;只能运行在程序规定的系统下&#xff0c;因为其需要调用原纯净系统提供…

TCP的三次握手和四次挥手······详解

1、三次握手 三次握手是建立连接的过程 如图大致为三次握手的流程图&#xff1a; 当客户端对服务端发起连接时&#xff0c;会先发一个包连接请求数据&#xff0c;去询问能否建立连接&#xff0c;该数据包称为 “SYN”包 然后&#xff0c;如果对方同意连接&#xff0c;那么…

【新版系统架构补充】-传输介质、子网划分

传输介质 双绞线&#xff1a;无屏蔽双绞线UTP和屏蔽双绞线STP&#xff0c;传输距离在100m内 网线安装标准&#xff1a; 光纤&#xff1a;由纤芯和包层组成&#xff0c;分多模光纤MMF、单模光纤SMF 无线信道&#xff1a;分为无线电波和红外光波 通信方式和交换方式 单工…

目标检测与跟踪 (1)- 机器人视觉与YOLO V8

目录 1、研究背景 2. 算法原理及对比 2.1 点对特征&#xff08;Point Pairs&#xff09; 2.2 模板匹配 2.3 霍夫森林 2.4 深度学习 3、YOLO家族模型演变 4、YOLO V8 1、研究背景 机器人视觉识别技术是移动机器人平台十分关键的技术&#xff0c;代表着机器人智能化、自动化…

台灯应该买什么样的才能护眼?教大家如何挑选护眼灯

家里顶灯太暗了且高度太高&#xff0c;还是原始的LED灯&#xff0c;晚上用着眼睛都有点难受&#xff0c;还好遇到了儿童护眼灯。下面小编为大家介绍下儿童护眼灯哪个牌子好&#xff1f;什么护眼台灯比较专业 护眼台灯怎么样选择 1、照度级别 台灯照度级别分为 A 级和 AA 级。…

【从零开始学习JAVA | 三十九篇】深入多线程

目录 前言&#xff1a; ​1.线程的寿命周期​ 2.线程的安全问题 3.锁 同步代码块&#xff1a; 同步方法&#xff1a; 死锁&#xff1a; 4.生产者和消费者模式&#xff08;等待唤醒机制&#xff09; 总结&#xff1a; 前言&#xff1a; 当今软件开发领…

图解SQL基础知识,小白也能看懂的SQL文章

本文介绍关系数据库的设计思想&#xff1a;在 SQL 中&#xff0c;一切皆关系。 在计算机龄域有许多伟大的设计理念和思想&#xff0c;例如&#xff1a; 在 Unix 中&#xff0c;一切皆文件。在面向对象的编程语言中&#xff0c;一切皆对象。 关系数据库同样也有自己的设计思想&a…

Element-plus中tooltip 提示框修改宽度——解决方案

tooltip 提示框修改宽度方法&#xff1a; 在element中&#xff0c;想要设置表格的内容&#xff0c;超出部分隐藏&#xff0c;鼠标悬浮提示 可以在el-table 上添加show-overflow-tooltip属性 同时可以通过tooltip-options配置提示信息 如下图代码 <el-tableshow-overflo…

【git技巧】什么是 .gitkeep

.gitkeep 文件的作用 就是——使 Git 保留一个空文件夹&#xff01; Git 是一个文件追踪系统&#xff0c;这也导致了 Git 的设计初衷是对文件进行追踪&#xff0c;所以&#xff0c;Git 不会追踪一个空目录。 但是&#xff0c;在某些情况下&#xff0c;我们确实是需要保留一些…

Grafana集成prometheus(2.Grafana安装)

查找镜像 docker search grafana下载指定版本 docker pull grafana/grafana:10.0.1启动容器脚本 docker run -d -p 3000:3000 --namegrafana grafana/grafana:10.0.1查看是否启动 docker ps防火墙开启 检查防火墙3000端口是否开启 默认用户及密码 admin/admin 登录 ht…

无涯教程-Perl - last 语句函数

当在循环内遇到 last 语句时&#xff0c;循环立即终止&#xff0c;程序控制在循环后的下一条语句处恢复。您可以为LABEL提供最后一个语句&#xff0c;其中LABEL是循环的标签。 last 语句可以在嵌套循环内使用&#xff0c;如果未指定LABEL&#xff0c;则该语句将适用于最近的循环…

SpringBoot实现数据库读写分离

SpringBoot实现数据库读写分离 参考博客https://blog.csdn.net/qq_31708899/article/details/121577253 实现原理&#xff1a;翻看AbstractRoutingDataSource源码我们可以看到其中的targetDataSource可以维护一组目标数据源(采用map数据结构)&#xff0c;并且做了路由key与目标…