Vector的用法

2023-05-16

我不知道大家是怎么理解Vector和怎样使用的,这篇文章主要是发表我自己对于Vector的看法,仅仅属于个人理解,如果有什么错误,也希望大家指正哈

目录

1:Vector的概念

2:Vector的使用


1:Vector的概念:

我个人把它当成数组来理解,当成一种可以操作的数组(一般数组我们没法快速操作,但用vector可以,使用内置函数就行了),那我们暂时就把它叫做向量。

vector<int>a;//这是一维数组
vector<int>a[10];//这个是二位数珠,后面的以此类推

2:Vector的使用:

(1)初始化:

我一般就单纯使用push_back()来添加元素(没有什么特别情况下)。

push_back()函数:在末尾添加元素

在这里输出vector中的元素呢,我们就是用数组下标来输出(前面不是说把vector当成数组理解蛮,嘿嘿嘿,其实就是我不懂滴!!!)当然了,还可以用迭代器来进行输出,这里不懂我们就把它当成死知识来记忆也行,后面遇到的多了,就懂了(其实是我自己说不明白,嘿嘿嘿)。具体我们看代码段!!!

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	for(int i=0;i<10;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}

(2)pop_back()函数

pop_back()函数:删除向量中的最后一个元素,无参数。

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	a.pop_back();
	cout<<endl;
	for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" "; 
	}
	return 0;
}

(3)front()和back()

front()函数和back()函数:具有返回值,返回的分别是向量中的第一个元素和最后一个元素

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	cout<<"第一个元素="<<a.front()<<" 最后一个元素="<<a.back();
	return 0;
}

 

 (4)size()和empty()

size()和empty():分别表示向量的大小和判断该向量是否为空,返回值分别是向量的大小和bool类型的值(如果为空,则返回True)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	cout<<"该向量的大小="<<a.size()<<endl;;
	if(!a.empty()){
		cout<<"该向量不是空的"<<endl;
	}
	return 0;
}

 (5)find()函数

find()函数:查找要寻找的数第一次出现的位置。find()函数用到三个参数,分别是查找位置的头地址,以及尾地址和要查找的元素返回值是第一次出现该元素的地址(我们暂时可以把它理解成迭代器)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	a.push_back(20);
	vector<int>::iterator iu,io;
	iu=find(a.begin(),a.end(),20);
	io=find(a.begin(),a.end(),10000);
	if(iu==a.end()){//注意哈,位置是从0开始计算的
		cout<<"没有找到20"<<endl;
	}
	else{
		cout<<"查找到,并且位置是"<<iu-a.begin()<<endl;//看不到位置,我们就暂时把它当成死知识来记忆
	}
	if(io==a.end()){
		cout<<"没有找到1000"<<endl;
	}
	else{
		cout<<"查找成功,并且位置是"<<io-a.begin()<<endl;
	}
	return 0;
}

 (6)insert()函数

insert()函数:添加元素,与push_back不同的是,它可以在任意位置添加元素

格式:第一个参数是迭代器的位置,第二个参数是添加的元素。(这里我就暂且只说一个,还有insert()函数的其他格式,比如插入多种元素,在一段区间中插入)注意哈,它是有返回值的,返回值是指向新元素的迭代器。

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	a.insert(a.begin(),18);//在第一个位置插入了18
	a.insert(a.begin()+4,99);//在第5个位置插入了99
	for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" ";
	}
	return 0;
}

 

(7)erase()函数和clear()函数

clear()函数:清空向量中的元素

erase()函数:删除指定位置的函数(用法与insert()函数一样)参数是一个,就是迭代器的位置。

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	cout<<endl;
	a.erase(a.begin()+5);//删除第六个位置
	for(it=a.begin();it!=a.end();it++){
		cout<<*it<<" ";
	}
	return 0;
}

(8)访问Vector中的元素

一:数组下标法访问(第一个元素都是从0开始的)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
    for(int i=0;i<a.size();i++)cout<<a[i]<<" ";
	return 0;
}

 

二:迭代器访问法(可以当成死知识来记忆)

#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int main()
{
	for(int i=1;i<=10;i++){
		a.push_back(i*10);
	}
	vector<int>::iterator it;
	for(it=a.begin();it!=a.end();it++){//这些就是迭代器用法输出,死记硬背哦
		cout<<*it<<" ";
	}
	return 0;
}

Vector中的函数当然不仅有这么多,这篇文章主要是介绍经常使用的,其它函数大家有兴趣的可以自己去找找,学习学习(其实是我懒并且菜,哈哈哈哈)!!!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vector的用法 的相关文章

  • 对向量元素进行向量化循环

    我发现很难对以下问题提出快速解决方案 我有一个观察向量 它表示观察某些现象的时间 example lt c 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 0 0 现在我想消除特定观察之间的零 假设某种现象会持续下去
  • 将函数应用于滚动窗口

    假设我有一个很长的清单A我想要计算的值 例如长度 1000 std100 对 即我想计算std A 1 100 std A 2 101 std A 3 102 std A 901 1000 在 Excel VBA 中 可以通过编写例如以下内
  • 从 r 矩阵的每一行中减去一个常数向量

    我有一个 5 列 4 行的矩阵 我还有一个 3 列的向量 我想分别从矩阵每一行的第 3 4 和 5 列减去向量中的值 b lt matrix rep 1 20 nrow 4 ncol 5 1 2 3 4 5 1 1 5 9 13 17 2
  • decltype(some_vector)::size_type 不能用作模板参数

    以下类无法编译 template
  • 运行时固定大小 std::vector ?

    性能在我的应用程序中至关重要 我需要类似的东西std experimental dynarray http en cppreference com w cpp container dynarray 因此数组的大小在运行时决定 所以我考虑使用
  • 并发写入向量

    我知道可以同时读取std vector没有 坏 后果 因为这个操作可以被认为是线程安全的 但对于写操作却不能这样说 但是 我想知道这是否并不总是正确的 例如考虑到我的特定情况 我有一个std vector
  • 我可以在 Javascript 中定义自定义运算符重载吗? [复制]

    这个问题在这里已经有答案了 是否可以在 JavaScript 中的类型实例之间定义自定义运算符 例如 假设我有一个自定义向量类 是否可以使用 vect1 vect2 检查是否相等 而底层代码会是这样的 operator a b return
  • 使用大括号括起来的初始值设定项列表初始化结构向量

    我像这样初始化普通类型向量 vector
  • 连接每第 n 行

    我在矩阵中得到了一个数据集 如下所示 从 Excel 导入 matrix Cat1 1 2 3 4 Cat2 9 10 11 12 Cat3 17 18 19 20 Cat1 5 6 7 8 Cat2 13 14 15 16 Cat3 21
  • Matlab:通过扩展向量来扩展矩阵

    我有一个dxmxn matrix A 解释 对于每个n 有m维度向量d 我想将每个 d 维向量扩展如下 考虑一个向量v维度 d 1 2 d 它是 x 1 x 2 x d 但为了简单起见 我删除了 x 目标是延长v获得一个d d向量形式 1
  • 如何让 SWIG 在包装包含向量的模板类时应用模板?

    我正在尝试使用 SWIG 来包装 在 C 中 一些 C 代码 该代码包含一个模板类 该模板类本身包装了std vector
  • 释放指针向量,但内存仍在使用中

    我不知道下面的代码有什么问题 我正在删除所有指针 但是当我使用 top 命令查看内存时 我可以看到仍然有大量内存分配给程序 我在这里缺少一些东西来释放内存吗 include
  • 将 openCV 矩阵转换为向量

    看起来很容易 毕竟我们知道 std 或 openCV 向量可以轻松转换为矩阵 如下所示 vector
  • 使用 numba 计算向量和矩阵中的行之间的余弦相似度

    找到了这个gist https gist github com FedericoV 0e7d6d8c8794a99a7a42使用 numba 快速计算余弦相似度 import numba numba jit target cpu nopyt
  • 将 R 中的向量按特定顺序转换为下三角矩阵

    我有一个向量 其中元素的顺序很重要 比如说 x lt c 1 2 3 4 我想将我的向量排列成具有特定顺序的下三角矩阵 其中每行包含向量的前一个元素 我的目标是获得以下矩阵 lower diag matrix 1 2 3 4 1 4 0 0
  • 从向量中删除向量::end

    当我使用时它工作正常吗 什么也不做 vector
  • 为什么这些向量不相等?

    我创建了两个向量 并用push back填充另一个向量 用索引填充另一个向量 我希望这些是相等的 但事实并非如此 有人可以解释一下这是为什么吗 include
  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • 如何在 C++ 中获取两个向量共有的字符?

    我正在尝试比较两个向量对象 并返回一个包含两个向量中出现的所有字符的向量 如果不编写一些非常复杂的手动方法 将第一个向量中的每个字符与第二个向量中的每个字符进行比较 并使用 if 将其添加到第三个向量 如果它们匹配 将返回 我将如何解决这个

随机推荐

  • windows下怎么查看exe是32位还是64位

    xxx exe用记事本或notepad打开 xff0c 找有字符的第二行中 PE 字符串旁边 xff0c 如果是 d xff0c 则为64位 xff1b 如果是 L xff0c 则为32位
  • 无法定位程序输入点 _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev于动态链接库

    在执行编译出来的exe时 xff0c 报了 无法定位程序输入点 ZNSt7 cxx1118basic stringstreamIcSt11char traitsIcESaIcEEC1Ev于动态链接库 的异常 出现这个问题时 xff0c 应该
  • 踩了个C++的未定义标识符"cout"的坑

    问题表现 没怎么用过C 43 43 写过完整的项目 xff0c 今天闲来无事 xff0c 便创建个c 43 43 的工程玩玩 xff0c 结果一个简单的打印输出就给卡住了 xff0c 无法打开文件 iostream h xff0c cout
  • Electron-Vue之安装流程

    近期摒弃了熟悉的WPF xff0c 选用了新的一套工具 xff08 Electron Vue xff09 来开发桌面软件 xff08 我是连html都没用过的猿 xff0c no zuo no die xff09 接触新的东西 xff0c
  • vscode的调试配置

    文章目录 vscode的调试配置文件调试配置选项 vscode的调试配置文件 vscode的调试配置存储在 vscode文件夹的launch json文件中 通过以下步骤可以创建一个调试配置 xff1a 切换到调试视图单击create a
  • C/C++实现strcpy和strcat两个功能

    strcpy和strcat是string h头文件中分别实现字符串数组拷贝与拼接功能的函数 xff0c 详细使用相信大家都了解了 xff0c 如果还不了解看看实例 C C 43 43 笔试必须熟悉掌握的头文件系列 xff08 四 xff09
  • C/C++锁机制(boost)的认知和使用

    锁扩充 加锁的必需考虑三个问题 该锁的不锁 xff0c 将会导致各种莫名其妙的错误 xff1b 加锁范围太大 xff0c 虽然能避免逻辑错误 xff0c 但如果锁了不该锁的东西 xff0c 难免会降低程序的效率 xff1b 加锁方式不合适
  • QT之GPS

    http blog sina com cn s blog 7da13b510100xtgr html 前几天发现手里还闲着一块GPS 佳明的15W 也不知道是好的还是坏的呵呵一时兴起我就趁周六日没什么事情 用qt做了一个界面 现在已经调试完
  • 关于tcp/udp网络调试助手错误提示

    最近在学习网络调试助手与虚拟机中的Ubuntu系统通信 xff0c 在使用Ubuntu做服务器端时 xff0c tcp以及udp协议都遇到了问题 1 tcp协议遇到的问题是 xff1a 网络调试助手提示 xff1a 1035未知错误 xff
  • 结构体和结构体链表

    在c语言表针中有多种数据类型 xff0c 他们的应用使变量的应用变得灵活多变 而除了c语言默认的int xff0c float 等类型外 xff0c 我们还可以自己定义一些数据的类型 xff0c 结构体类型便是可以实现数据类型自定义的类型
  • 串口通信UART

    串口基本概念 串口通讯 Serial Communication 是指外设和计算机间 xff0c 通过数据信号线 地线等 xff0c 按位进行传输数据的一种通讯方式 其通讯协议可分层为协议层和物理层 物理层规定通信协议中具有机械 电子功能的
  • 一、Fmcw毫米波雷达原理

    0 概念 FMCW Frequency Modulated Continuous Wave xff0c 即调频连续波 FMCW技术和脉冲雷达技术是两种在高精度雷达测距中使用的技术 其基本原理为发射波为高频连续波 xff0c 其频率随时间按照
  • Makefile和CMake

    Makefile makefile主要规则 xff1a 伪对象 PHONY clean 规则1 main main o gcc main o o main 规则2 main o main c gcc c main c o main o 规则
  • C语言基础——结构体

    结构体的作用 在需要表示一些复杂信息时 xff0c 使用单纯的数据类型很不方便 比如 xff1a 学生信息 xff08 学号 xff0c 姓名 xff0c 班级 xff0c 电话 xff0c 年龄 xff09 xff1b GPIO信息 xf
  • Nginx 通过 header 中的标识进行分发

    Nginx可以根据请求头中自定义的标识将请求分发到不同的服务器 具体来说 xff0c 可以使用map指令将请求头中的自定义标识映射为不同的后端服务器地址 xff0c 然后使用proxy pass指令将请求转发到对应的后端服务器 以下是一个示
  • DB9接口详解---DB9引脚在 UART,CAN,RS485中的定义

    DB9的公母如下 xff1a 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 超强整理!PCB设计之电流与线宽的关系

    关于pcb线宽和电流的经验公式 xff0c 关系表和软件网上都很多 xff0c 本文把网上的整理了一下 xff0c 旨在给广大工程师在设计PCB板的时候提供方便 以下总结了八种电流与线宽的关系公式 xff0c 表和计算公式 xff0c 虽然
  • nginx 主动健康检查搭建详解(nginx_upstream_check_module)

    版本信息 nginx 1 21 1 下载nginx upstream check module模块 nginx upstream check module master zip wget https codeload github com
  • paddle推理部署(cpu)

    我没按照官方文档去做 xff0c 吐槽一下 xff0c 官方文档有点混乱 一 概述 总结起来 xff0c 就是用c 43 43 示例代码 xff0c 用一个模型做推理 二 示例代码下载 https www paddlepaddle org
  • Vector的用法

    我不知道大家是怎么理解Vector和怎样使用的 xff0c 这篇文章主要是发表我自己对于Vector的看法 xff0c 仅仅属于个人理解 xff0c 如果有什么错误 xff0c 也希望大家指正哈 目录 1 xff1a Vector的概念 2