C++中STL的容器vector

文章目录

  • 什么是vector
    • vector与普通顺序表不同的点
  • vector的成员函数
    • operator=
    • operator[]
    • begin与end与iterator
    • size()
    • capacity
    • resize
    • empty
    • reserve
    • push_back
    • pop_back
    • insert
    • erase
    • swap
    • clear
    • 成员变量
  • 总结

什么是vector

vector:是数据结构里面的顺序表,开辟一段连续的空间存储内容

vector与普通顺序表不同的点

1、因为是用c++写的,里面包含了模版,可以是自定义类型,不止内置类型
2、自身提供了交换函数
3、c++11中引入了auto 可以使用范围for遍历
····

vector的成员函数

operator=

赋值操作
在这里插入图片描述
因为只重载了一个版本
vector类型=vector类型
如果其是其他类型会隐式类型转化

operator[]

[]:下标查找

#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);//arr.resize(2);arr.reserve(100);cout << arr[1]<< endl;return 0;
}

begin与end与iterator

iterator:迭代器,vector中是用模版指针定义的
begin:指向第一个元素
end:指向最后一个元素
使用方式:

#include <iostream>
#include <vector>int main ()
{std::vector<int> myvector;for (int i=1; i<=5; i++) myvector.push_back(i);std::cout << "myvector contains:";for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;
}

size()

size():计算有效长度为多少
使用方式:

#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);cout << arr.size() << endl;return 0;
}

capacity

capacity:查当前顺序表中的容量

#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);cout << arr.capacity() << endl;return 0;
}

resize

resize:设置容量
如果resize<size()那么会缩容,并且吧数据删掉
如果resize在size()和capacity()之间那么也是缩容,不删数据
如果resize>capacity()那么就是扩容
在这里插入图片描述

empty

检查顺序表中有没有内容

#include <iostream>
#include <vector>int main ()
{std::vector<int> myvector;int sum (0);for (int i=1;i<=10;i++) myvector.push_back(i);while (!myvector.empty()){sum += myvector.back();myvector.pop_back();}std::cout << "total: " << sum << '\n';return 0;
}

reserve

reserve:扩容
在这里插入图片描述

push_back

尾插

#include"vector.h"
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);//arr.resize(2);arr.reserve(100);cout << arr[1]<< endl;return 0;
}

pop_back

尾删

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();//arr.resize(2);//arr.reserve(100);cout << arr.size()<< endl;return 0;
}

insert

指定位置插入
可以插入一个,也可以多个
因为他重载的是迭代器参数,避免了定死了类型
所以要传的是迭代器

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();arr.insert(arr.begin()+2, 30);//arr.resize(2);//arr.reserve(100);cout << arr.size()<< endl;return 0;
}

erase

删除指定位置的内容
重载的同样是迭代器
所以要传迭代器

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();arr.insert(arr.begin()+2, 30);arr.erase(arr.begin() + 2);//arr.resize(2);//arr.reserve(100);cout << arr.size()<< endl;return 0;
}

swap

交换,跟vector类型的对象 交换所有东西

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;vector<int> s;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.pop_back();arr.pop_back();arr.pop_back();arr.insert(arr.begin()+2, 30);arr.erase(arr.begin() + 2);//arr.resize(2);//arr.reserve(100);s.swap(arr);cout << arr.size()<< endl;cout << s.size() << endl;return 0;
}

clear

清除字符串内容

#include"vector.h"
#include<iostream>
#include<vector>
using namespace std;int main()
{//dabai::test1();vector<int> arr;vector<int> s;arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.push_back(11);arr.pop_back();arr.insert(arr.begin()+2, 30);arr.erase(arr.begin() + 2);//arr.resize(2);//arr.reserve(100);s.swap(arr);cout << arr.size()<< endl;cout << s.size() << endl;s.clear();cout << s.size() << endl;return 0;
}

成员变量

都是迭代器,我这个是自己写的
并不是官方的名字

	iterator _str;//首个元素的地址iterator _size;//尾元素的地址iterator _capacity;//容量

总结

跟普通的顺序表还是有区别的,总体变的好用了很多。
dp最大的噩梦

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

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

相关文章

【LeetCode刷题】数组篇2

&#x1f387;数组中等题Part &#x1f308; 开启LeetCode刷题之旅 &#x1f308; 文章目录 &#x1f387;数组中等题Part&#x1f370;229.多数元素II&#x1f451;思路分析1.哈希表法2.摩尔投票法(进阶) &#x1f370;15.三数之和&#x1f451;思路分析1.排序双指针 &#x…

音乐曲谱软件Guitar Pro 8.1.1 破解版下载和网盘补丁

Guitar Pro 8.1.1 for Mac 中文破解版是一款功能强大的音乐曲谱软件&#xff0c;非常适合学习如何玩&#xff0c;改进技巧&#xff0c;重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作&#xff0c;它包含了几乎所有的吉他现有指法及音色&#xff0c;在做弹拨…

角谷定理 C语言xdoj32

角谷定理定义如下&#xff1a; 对于一个大于1的整数n&#xff0c;如果n是偶数&#xff0c;则n n / 2。如果n是奇数&#xff0c;则n 3 * n 1&#xff0c;反复操作后&#xff0c;n一定为1。 例如输入22的变化过程&#xff1a; 22 ->11 -> 34 -> 17 -> 52 -> 26 …

电源小白入门学习3——电源系统常见元件选型MOS管、二极管、电感篇

电源小白入门学习3——电源系统常见元件选型MOS管、二极管、电感篇 MOS管二极管电感 书接上文&#xff0c;上一期我们讲了电阻、电容选型中需要注意的事项&#xff0c;下面我们接着来介绍MOS管和二极管。 MOS管 关于MOS管的基本原理和内部的一些结构&#xff0c;PN结、半导体的…

FPGA 低延时 TCP UDP IP协议栈兼容1G 10G 25G MAC

在计算和数据中心、军事和航天、政府、仪器与测量、金融服务和广播和视频等行业&#xff0c;需要高可靠性的硬件和软件产品&#xff0c;帮助客户更快地开发部署新一代产品&#xff0c;减少技术和市场风险&#xff0c;我司研发的低延迟TCP/IP的IP核的传输速率高于传统网口&#…

uni-app 设置当前page界面进入直接变为横屏模式

首先 我们打开项目的 manifest.json 在左侧导航栏中找到 源码视图 然后找到 app-plus 配置 在下面加上 "orientation": [//竖屏正方向"portrait-primary",//竖屏反方向"portrait-secondary",//横屏正方向"landscape-primary",//横屏…

99、NeRF ray space

CG相机模型 在图形学中最常用的相机模型的原理和小孔成像是类似的。 不同之处在于&#xff0c;如上图&#xff0c;小孔成像得到的图像是倒立的&#xff0c;但是我们希望得到的图像是正向的&#xff0c;因此&#xff0c;我们选择小孔前成像。 从 3D 到 2D 的投影&#xff0c;…

Grad-CAM原理

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 只要大家一提到深度学习 缺乏一定的解释性 比如说在我们之前讲的分类网络当中 网络它为什么要这么预测 它针对每个类别所关注的点在哪里呢 在great cam这篇论文当中呢 就完美的解决了在cam这篇论…

java多线程(常用方法、实现方式、线程安全问题、生命周期、线程池)

多线程相关的三组概念 程序和进程 程序&#xff08;program&#xff09;&#xff1a;一个固定的运行逻辑和数据的集合&#xff0c;是一个静态的状态&#xff0c;一般存储在硬盘中。简单来说就是我们编写的代码 进程&#xff08;process&#xff09;&#xff1a;一个正在运行的…

游戏玩家升级不伤手之选,光威龙武系列超强性能

得益于国产存储芯片的崛起&#xff0c;现在的内存条价格太香了。要放在前几年&#xff0c;购买内存条时都会优先考虑国际一线品牌。随着内存条行业发生巨变&#xff0c;国产品牌光威GLOWAY&#xff0c;是全球前三的内存模组厂商嘉合劲威旗下品牌&#xff0c;它推出的内存条产品…

Zebec 推出由 Visa、万事达网络支持的即时支付卡,加密支付新征程

“Zebec现已推出全新的加密支付卡&#xff0c;该卡由Visa、万事达网络支持&#xff0c;具备即时、多链、非托管、无需KYC、免费等特性&#xff0c;其能够通过加密钱包与多条主流公链链接并直接调用支付&#xff0c;这将是加密支付领域的里程碑事件。” 在2023年的12月8日&#…

【python交互界面】实现动态观察图像在给定HSV范围的区域显示

HSV颜色空间 与RGB颜色空间相比&#xff0c;HSV颜色空间更适合进行颜色分析和提取特定颜色的目标。在HSV空间中&#xff0c;颜色信息被分布在不同的通道上&#xff0c;使我们能够更准确地定义颜色的范围&#xff0c;并使用阈值操作轻松地分离出我们感兴趣的区域部分。 HSV三个通…

二叉树查找值为x的结点(C语言)

目录 前言 查找值为x的结点 返回值为指针 返回值为布尔类型 整体代码 前言 在二叉树结点个数、叶子结点个数、树的高度、第k层结点个数的计算&#xff08;C语言&#xff09;中&#xff0c;我们解决了关于二叉树的部分问题&#xff0c;但是还有一个问题我们放在本篇解决。 …

数据集成和人工智能驱动的见解

数字时代使数据成为人们关注的焦点&#xff0c;将其从单纯的二进制序列转变为有价值的组织资产。随着企业越来越多地转向数据驱动战略&#xff0c;数据管理的复杂性也随之增加。当前的任务不仅仅是存储甚至收集数据&#xff0c;而是将其转化为可操作的情报。本博客旨在剖析寻求…

Python中的selenium安装的步骤(浏览器自动化测试框架)

一、前言 我们今天要安装的selenium 就是浏览器自动化测试框架&#xff0c;是一个用于Web应用程序的测试工具&#xff0c;就是模拟用户操作。支持的浏览器包括Chrome&#xff0c;IE&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Opera等。今天我们以Chrome为例讲…

STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计

STM32单片机项目实例&#xff1a;基于TouchGFX的智能手表设计&#xff08;2&#xff09;UI交互逻辑的设计 目录 一、UI交互逻辑的设计 1.1 硬件平台的资源 1.2 界面切换功能 ​​​​​​​1.3 表盘界面 1.4 运动界面 ​​​​​​​1.6 设置界面 ​​​​​​​1.7 应…

不一样的年会彩瞳推荐,绮芙莉多款彩瞳彰显个性

临近年底&#xff0c;各种公司年会、跨年晚会活动也逐渐排上日程&#xff0c;出席这种正式场合&#xff0c;每个人都有自己的“杀手锏”&#xff0c;从发型妆容到穿搭都是变美小细节&#xff0c;作为心灵之窗的双眸&#xff0c;更需要一副彩瞳来提升我们的眼妆质感&#xff0c;…

【SpringBoot】解析Springboot事件机制,事件发布和监听

解析Springboot事件机制&#xff0c;事件发布和监听 一、Spring的事件是什么二、使用步骤2.1 依赖处理2.2 定义事件实体类2.3 定义事件监听类2.4 事件发布 三、异步调用3.1 启用异步调用3.2 监听器方法上添加 Async 注解 一、Spring的事件是什么 Spring的事件监听&#xff08;…

持续集成交付CICD:使用Jenkins插件上传Nexus制品

目录 一、实验 1.使用Jenkins插件上传Nexus制品 一、实验 1.使用Jenkins插件上传Nexus制品 &#xff08;1&#xff09;Jenkins安装插件Nexus Artifact Uploader &#xff08;2&#xff09;添加凭据 &#xff08;3&#xff09;使用片段生成器生成DSL &#xff08;4&#xf…

docke网络之bridge、host、none

一、bridge网络 1.创建一个测试容器 [rootlocalhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done" 03b308c847edd23f21ba69afb825d92f7aaeb05b1ff4431dd47ccee439a0361a 2.查看当前机器docker有哪些网络 [rootlocal…