vector的使用

news/2024/10/19 9:38:41/

1.构造函数

void test_vector1()
{vector<int> v; //无参的构造函数vector<int> v2(10, 0);//n个value构造,初始化为10个0vector<int> v3(v2.begin(), v2.end());//迭代器区间初始化,可以用其他容器的区间初始化vector<int> v4(v3); //拷贝构造初始化
}

2.遍历vector的三种方式

//遍历vector
//1.下标[]
for (size_t i = 0; i < v3.size(); i++)
{cout << v3[i] << " ";//也可以用at
}
cout << endl;
//2.迭代器
vector<int>::iterator it = v4.begin();
while (it != v4.end())
{cout << *it << " ";++it;
}
//3.for
for (auto ch : v4)
{cout << ch << " ";
}
cout << endl;

3.析构函数

4.capacity

先看一下vector的扩容机制

void test_vector2()
{size_t sz;vector<int> v;v.reserve();提前开好空间,size没有变,capacity变了sz = v.capacity();cout << "making v grow:\n";for (int i = 0; i < 100; i++){v.push_back(i);if (sz != v.capacity()){sz = v.capacity();cout << "capacity changed:" << sz << '\n';}}
}

输出:大概是1.5扩容

易错点:reserve空间开出来就可以访问吗?看下面的代码:

void test_vector3()
{vector<int> v;v.reserve(100); /*for (size_t i = 0; i < v.size(); i++) 不能初始化,因为reserve只是把v的容量变成100,但是size还是0{v[i] = i;}*/for (size_t i = 0; i < 100; i++)//错误{v[i] = i;//[]只能访问0~size-1的数据}for (auto e : v){cout << e << " ";}cout << endl;
}

要是想访问,只能用下面的方法。

void test_vector3()
{vector<int> v;
//	v.reserve(100);//size=0  capacity=100v.resize(100); //size=100  capacity=100for (size_t i = 0; i < 100; i++){v[i] = i;}for (auto e : v){cout << e << " ";}cout << endl;
}

其中最最重要的是resize和reserve,max_size是没有意义的接口,告诉能开多大空间,但是实际上不准,所以平时不需要管。 

5.[]、at

和string类似

front和back支持访问头尾的数据,但是一搬习惯于[]

6.push_back、pop_back

void test_vector4()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.insert(v.begin(), 5); //在pos位置之前,插入valfor (auto e : v){cout << e << " ";}cout << endl;auto it = find(v.begin(), v.end(), 3);//要想在3之前插入,vector里面没有find,algorithm算法库里面有findif (it != v.end()){v.insert(it, 30);}for (auto e : v){cout << e << " ";}删除it = find(v.begin(), v.end(), 3);if (it != v.end()){v.erase(it);}for (auto e : v){cout << e << " ";}//clear只是清除数据,不清除capacity
}

输出:


http://www.ppmy.cn/news/1452603.html

相关文章

《STM32 HAL库》中断相关函数详尽解析——外部中断服务函数

观前提醒&#xff1a;本文简要回顾了EXTI及NVIC相关知识点&#xff0c;分析了stm32f1系列单片机外部中断回调机制 开始之前&#xff0c;先温习一下有关EXTI和NVIC的知识点 外部中断/事件控制器(EXTI) 对于互联型产品&#xff08;105、107系列&#xff09;&#xff0c;外部中断…

layui中禁用div标签等操作

为了实现点击表格行后触发事件 然后去触发后进行操作 页面流程操作设置规定 不可编辑直接添加属性 class"layui-disabled"如果在最大的 div 设置不可编辑 但是内部有些还是可以触发使用的 所以就重写一下 取到当前 div 下的 所有的子元素 然后在给所有的子元素…

qt5-入门-2D绘图-基础

参考&#xff1a; QPainter_w3cschool https://www.w3cschool.cn/learnroadqt/k7zd1j4l.html C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 代码已经测试通过。其他例子日后更新。 目录 基础知识penb…

2-手工sql注入(进阶篇) sqlilabs靶场1-4题

1. 阅读&#xff0c;学习本章前&#xff0c;可以先去看看基础篇&#xff1a;1-手工sql注入(基础篇)-CSDN博客 2. 本章通过对sqlilabs靶场的实战&#xff0c;关于sqlilabs靶场的搭建&#xff1a;Linux搭建靶场-CSDN博客 3. 本章会使用到sqlmap&#xff0c;关于sqlmap的命令&…

Java毕业设计 基于SSM 健身中心管理系统

Java毕业设计 基于SSM 健身中心管理系统 SSM 健身中心管理系统 功能介绍 首页 图片轮播 登录注册 场地展示 场地详情 立即租赁 课程展示 课程详情 课程预约 器材展示 器材详情 立即租赁 优惠信息展示 优惠详情 健身资讯 资讯详情 个人中心 收藏 我的预约 我的租赁 后台管理 …

最小费用流相位解包裹

% test_cunwrap.m % % Matlab script to test Costantinis unwrapping % Author: Bruno Luong <brunoluong@yahoo.com> % History: % Orginal: 27-Aug-2009clear all; close all; clc; I1=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.public_files\博士阶段\小…

k8s环境prometheus operator监控集群外资源

文章目录 k8s环境添加其他节点基于prometheus operator k8s环境prometheus operator添加node-exporter方式一&#xff1a;通过 ServiceMonitor 方式可以写多个监控node节点运行 external-node.yaml查看资源有没有被创建热更新 外部需要被监控服务器安装 node-exporterdocker 方…

BUUCTF---misc---[BJDCTF2020]纳尼

1、下载附件是一个gif图片&#xff0c;但是图片打不开 2、用winhex分析&#xff0c;看到缺少了文件头 3、将文件头通过ASCII码方式粘贴后&#xff0c;保存&#xff0c;图片恢复了正常 4、是一张动图&#xff0c;一共四张&#xff0c;每张都有base64编码 5、用stegsolve分解图…