C++——vector基本概念,构造函数,赋值操作与容量和大小

        一.vector基本概念

功能:vector数据结构和数组非常类似,也称为单端数组
vector与普通数组的区别:不同之处在于数组是静态空间,而vectors可以动态扩展
 动态扩展:并不是在原空间之后继续接新空间,而是找更大的内存空间,然后将原有数据拷贝新空间,释放原有空间

    vector容器内部结构:
     1. vector容器是前端封闭,单端数组
     2.在尾部提供两个对外接口:1.尾插:push_back() 2尾删:pop_back()  
     3.代表容器第一个元素:front()  容器最后一个元素:back();
     4.常用迭代器:1.指向第一个元素前一个位置v.rend()
                           2.指向第一个元素位置v.begin()
                           3.指向最后一个元素位置v.rbegin()
                           4.指向最后一个元素下一个位置v.end()
                           5.添加数据insert()    
    注:vector容器的迭代器是支持随机访问的迭代器       

二.vector构造函数     

功能描述:创建vector容器
  函数原型:
    1.vector<T> v;                        //采用模板实现类实现,默认构造函数
    2.vector(v.begin(),v.end());  //将v(begin(),end())区间中的元素拷贝给本身
    3.vector(n,elem);                    //构造函数将n个elem拷贝给本身
    4.vector(const vector &vec);  //拷贝构造函数

        实例:

void printVector(vector<int>&v)//遍历,公用打印函数
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{vector<int>v1;//默认构造 无参构造for (int i = 0; i < 10; i++){v1.push_back(i);}printVector(v1);//通过区间方式进行构造  在string容器中是没有这种方式的vector<int>v2(v1.begin(), v1.end());//把两个迭代器传进去,获取迭代器之间的数据并进行赋值printVector(v2);//n个elem方式构造vector<int>v3(10, 100);printVector(v3);//拷贝构造vector<int>v4(v3);printVector(v4);
}

总结:vector的多种构造方式没有可比性,灵活使用即可

三.vector赋值操作

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

实例:

        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;//将[beg,end)区间中的数据拷贝赋值给本身v3.assign(v1.begin(), v1.end());//提供俩个迭代器,并将俩个迭代器区间元素取出printVector(v3);//n个elem方式赋值  构造也有这个方法,但是实现位置不一样vector<int>v4;//这是构造函数v4.assign(10, 100);//这是赋值行为

四.vector容量和大小

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

    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.reserve(15);//如果重新指定的比原来长了,默认用0填充新的位置//默认值是可以改的,利用指定默认填充值,也就是参数2  例如写成:v1.reserve(15,100);printVector(v1);v1.reserve(5);//如果重新指定的比原来短了,超出部分会删除掉 printVector(v1);

总结:
判断是否为空 --- empty
返回元素个数 --- size
返回容器容量 --- capacity
重新指定大小 --- resize   


  仅个人看视频笔记与理解,如有误可指出谢谢

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

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

相关文章

String类讲解(1)

&#x1f435;本篇文章将讲解String类及其包含的方法 一、介绍String类 String属于引用类型&#xff0c;String类是Java的一个内置类&#xff0c;用于表示字符串&#xff0c;String类中具有许多方法&#xff0c;可以用来操作和处理字符串 二、字符串的构造 下面介绍三种构造字…

蓝桥杯每日一题2023.11.27

题目描述 星系炸弹 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题目一一枚举即可 #include<bits/stdc.h> using namespace std; bool is_r(int n) {if((n % 4 0 && n % 100 ! 0)|| n % 400 0)return true;return false; } int mm[13] {0, 31, 28, 31, 30, 3…

万字详解,和你用RAG+LangChain实现chatpdf

像chatgpt这样的大语言模型(LLM)可以回答很多类型的问题,但是,如果只依赖LLM,它只知道训练过的内容,不知道你的私有数据:如公司内部没有联网的企业文档,或者在LLM训练完成后新产生的数据。(即使是最新的GPT-4 Turbo,训练的数据集也只更新到2023年4月)所以,如果我们…

Docker入门教程

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

微服务--02--Nacos注册中心

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 服务注册和发现手动发送Http请求的方式存在问题注册中心原理 Nacos注册中心配置服务注册服务发现小结&#xff1a; 服务注册和发现 手动发送Http请求的方式存在问题…

Android使用WebView展示本地html网页

Android使用WebView展示本地html网页 1、在assets目录下新建html文件 新建agreement.html文件&#xff0c;内容如下&#xff1a; <html> <head><title>用户协议</title> </head> <body> <h1>用户协议</h1> </body> &…

Compensated Summation/Kahan‘s Summation的理解

阅读《Efficient Generation of Error-Inducing Floating-Point Inputs via Symbolic Execution》这篇论文时&#xff0c;文中提到的Commpensated Summation没看太懂&#xff0c;代码如下&#xff1a; 查阅资料发现Compensated Summation也叫Kahan’s Summation&#xff0c;该…

Termius 一款优秀的跨平台 SSH 客户端工具

&#x1f525;&#x1f525;&#x1f525; 作为程序员或者运维管理人员&#xff0c;我们经常需要使用终端工具来进行服务器管理及各种操作&#xff0c;比如部署项目、调试代码、查看/优化服务、管理服务器等。 而实现远程服务器连接需要借助 SSH 协议来进行&#xff0c;SSH&am…

青少年CTF之PHP特性练习(1-5)

青少年CTF-PHP特性练习 文章目录 青少年CTF-PHP特性练习PHP特性01PHP特性02PHP特性03PHP特性04PHP特性05 PHP特性01 看给出的源码&#xff0c;两个变量的值加密后的MD5相同 <?php$s1 "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47…

使用Pytorch从零开始构建Energy-based Model

知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II 在本教程中…

Intel Software Guard Extensions简介

文章目录 前言一、新的基于硬件的控件实现数据安全二、机密计算的挑战三、用于机密计算的增强安全功能四、Enclave验证和数据密封五、数据中心认证参考资料 前言 最近开始研究Intel SGX硬件特性&#xff0c;记录下研究过程。 参考文档&#xff1a;product-brief-SGX 一、新的…

CF 1901B Chip and Ribbon 学习笔记

链接 传送门 代码 #include<bits/stdc.h> using namespace std;typedef long long LL;const int N2e510; LL a[N],c[N];int main() {int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);LL sum0;for(int i1;i<n;i){scanf("%l…

ELK---filebeat日志收集工具

filebeat日志收集工具 filebeat日志收集工具和logstash相同 filebeat的优点&#xff1a; filebeat是一个轻量级的日志收集工具&#xff0c;所使用的系统资源比logstash部署和启动时使用的资源要小的多 filebeat可以运行在非Java环境。它可以代替logstash在非Java环境上收集…

前后端分离前端请求后端接口的方式

1. Ajax 使用原生 JavaScript 或基于框架&#xff08;如 Axios、jQuery.ajax&#xff09;的 Ajax 技术&#xff0c;通过发送异步请求获取后端接口数据。可以使用 GET、POST 等 HTTP 方法发送请求&#xff0c;并处理返回的数据。 import axios from axios;const API_URL http:…

初刷leetcode题目(8)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

VM安装Centos

文章目录 第2章 VM与Linux的安装2.1 VMWare安装2.2 CentOS安装 第3章 Linux文件与目录结构3.1 Linux文件3.2 Linux目录结构 第4章 VI/VIM编辑器4.1 是什么4.2 测试数据准备4.3 一般模式4.4 编辑模式4.5 命令模式4.6 模式间转换 第5章 网络配置和系统管理操作5.1 查看网络IP和网…

Java根据指定端口关闭进程(端口占用 Web server failed to start. Port 6061 was already in use.)

查询指定端口的pid netstat -ano | findstr 6063杀掉进程 taskkill /f /pid 36804

40.0/jdbc/Java数据连接/jar包运用增删改

目录 40.1. 回顾 40.2. 正文 40.1 为什么需要jdbc 40.2 如何连接mysql数据库 40 .3 jdbc容易出现的错误 40.4 完成删除 40.5 完成修改 40.1. 回顾 1. 自联查询: 自己连接自己的表。注意:一定要为表起别名。 2. 嵌套查询: 把一个查询的结果作为另一个查询的条件值。 3. 组…

mysql处理40w数据脚本执行慢问题

需求背景&#xff1a; 2张表 SS_ZYXX 1w数据&#xff0c;WD_GZPZ 50w数据 SS_ZYXX.id WD_GZPZ.zyxx_id 找到SS_ZYXX表有数据&#xff0c;关联表WD_GZPZ没有数据的SS_ZYXX表的id 处理方案 方案一&#xff1a; 联合查询&#xff1a; 下面sql&#xff0c;在mysql执行时间3…

随想录二刷Day24——二叉树

很久没有刷算法题了&#xff0c;又荒废了&#xff0c;习惯还得保持啊&#xff0c;希望能坚持一天1~2道题。 文章目录 二叉树32. 将有序数组转换为二叉搜索树33. 把二叉搜索树转换为累加树 二叉树 32. 将有序数组转换为二叉搜索树 108. 将有序数组转换为二叉搜索树 思路&…