首页 > 编程语言 >c++vector怎么用

c++vector怎么用

时间:2023-04-04 17:55:41浏览次数:36  
标签:怎么 初始化 删除 元素 back c++ v1 vector

ANSWER
C++中的vector是一个能够存放任意类型的动态数组,能够增加和压缩数据,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。以下是使用vector的详细步骤和注意事项:

头文件
在使用vector时,需要包含vector头文件

include

初始化
如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串。
可以通过以下方式初始化vector
vector v1;
vector v2;
vector v3(10); // 默认初始化为0
vector v4(5, "hello"); // 初始化为5个"hello"
访问vector中的元素
可以通过下标访问vector中的元素
vector v1{1, 2, 3};
cout << v1[0] << endl; // 输出1
可以通过迭代器访问vector中的元素
vector v1{1, 2, 3};
for (auto it = v1.begin(); it != v1.end(); ++it) {
cout << *it << endl;
}
在vector中添加元素
可以通过push_back()函数向vector中添加元素
vector v1{1, 2, 3};
v1.push_back(4);
在vector中删除元素
可以通过pop_back()函数删除vector中的最后一个元素
vector v1{1, 2, 3};
v1.pop_back();
可以通过erase()函数删除vector中的指定元素
vector v1{1, 2, 3};
v1.erase(v1.begin() + 1); // 删除第二个元素
vector的内存自增长
vector的内存空间只会增长,不会减小
vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储
当vector的元素数量超过其容量时,vector会重新分配内存,将原有元素复制到新的内存中
这个过程可能会很耗时,因此在需要对vector进行大量操作时,可以使用reserve()函数提前预分配内存
vector v1;
v1.reserve(100); // 预分配100个元素的内存空间
vector的优缺点
优点
vector是一个动态数组,可以根据需要增加或压缩数据
vector的元素以连续方式存放,可以快速访问元素
vector提供了多种操作函数,方便对元素进行添加、删除、排序等操作
缺点
当vector的元素数量超过其容量时,vector会重新分配内存,将原有元素复制到新的内存中,这个过程可能会很耗时
在vector中插入或删除元素时,可能会导致vector中其他元素的位置发生改变,影响程序的运行效率

标签:怎么,初始化,删除,元素,back,c++,v1,vector
From: https://www.cnblogs.com/wpyshf/p/17287244.html

相关文章

  • dash-board的kube-config文件怎么设置 就是比kube-proxy类似多了一个token选项
    https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#使用RBAC鉴权RBAC是基于角色的访问控制(Role-BasedAccessControl)https://kubernetes.io/zh/docs/reference/access-authn-authz/authorization/#鉴权概述1.1:在指定namespace创建账户:#kubectlcre......
  • CAD更改线宽后没有变化效果怎么办?
    CAD更改线宽后没有变化效果怎么办?在我们调整CAD图纸样条线线宽的过程中,有可能会遇到更改CAD线宽没反应的情况,这种不显示的情况要怎么解决呢?本期,就和一起看看CAD更改线宽后不显示变化的原因和解决方法吧!CAD更改线宽后没有变化效果怎么办?CAD更改线宽后没反应的原因是因为CAD......
  • c++ 数字和string 类型的相互转换
    C++数字和string类型的相互转换数字转为string1.std::to_string()函数//Definedinheader<string>std::stringto_string(intvalue);//(sinceC++11)std::stringto_string(longvalue);//(sinceC++11)std::stringto_str......
  • C++奥赛一本通贪心题解
    C++奥赛一本通刷题记录(贪心)2017.11.15Bygwj1139177410书不见了,占坑待填。AnEasyProblempoj2453//贪心,将最右边第一个01改成10并将其右边的1都往右移到最低位#include<iostream>usingnamespacestd;intmain(){unsignedintn,x;while(cin>>n&&n){......
  • C++,OpenCV图形基础(2)
    图像基础颜色通道RGB图像有4个默认通道:红色、绿色和蓝色各有一个通道,以及一个用于编辑图像复合通道(主通道)彩色深度8位色,每个像素所能显示的彩色数为2的8次方,即256种颜色。16位增强色,16位彩色,每个像素所能显示的彩色数为2的16次方,即65536种颜色。24位真彩色,每个像素所能显示的彩色......
  • C++统计写过的代码行数
    一、获得数据1、备份到XML2、改为txt2、进行统计#include<iostream>#include<string>usingnamespacestd;intmain(){ freopen("just.txt","r",stdin); strings; getline(cin,s); intflag=0;longlongcount=0; while(s!="gwj49491649......
  • 多线程任务怎么选 Thread,ThreadPoll,Task
    提问多线程任务怎么选Thread,ThreadPoll,Task回答Task原因Thread:创建销毁代价昂贵ThreadPoll:管理线程资源Task基于线程池......
  • vector 简单应用
                            Vector简单应用定义:vector是C++标准模板库中的部分内容,中文偶尔译作"容器",但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器......
  • 2023蓝桥杯省赛C/C++组备赛
    一、简单计算与模拟1.成绩统计#include<bits/stdc++.h>usingnamespacestd;intn;intmain(){ doublepoint; doublejige=0,youxiu=0; cin>>n; for(inti=0;i<n;++i){ cin>>point; if(point>=60){ jige++; if(point&......
  • 浏览器显示你的连接不是专用连接怎么解决?
    直接上问题截图:(真的可以解决问题!!!)当你的chorme或edge浏览器打开网页遇到这个问题的时候,不要再去改配hosts、修改DNS地址、不修改WLAN属性了.....你只需要:1.将键盘调整为英文输入状态;2.刷新一下页面,鼠标点击当前页面任意位置;3.依次按键:thisisunsafe(这里注意:是un,不要多打s成sun......