iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++ vector用法 入门必看 超详细
  • 179
分享到

c++ vector用法 入门必看 超详细

c++算法数据结构 2023-10-24 19:10:36 179人浏览 泡泡鱼
摘要

1、vector的作用 vector是最常用的容器之一,功能十分强大,可以储存、管理各种类型的数据。在很多情况下可以用来代替功能比较局限的普通数组,因为我们知道,普通数组只能实现一对一的映射而不能实现

1、vector的作用

vector是最常用的容器之一,功能十分强大,可以储存、管理各种类型的数据。在很多情况下可以用来代替功能比较局限的普通数组,因为我们知道,普通数组只能实现一对一的映射而不能实现一对多的映射,vector就是专门为了解决这个问题而诞生的。vector也可以称为动态数组,因为其大小是根据实时更新而变化的,正因为如此vector显得更加灵活易用。

举个例子
小明拥有一根香蕉和两个苹果
小芳拥有一根棒棒糖个三个梨
那么你试着思考一下,应当如何在程序中表示这种结构呢?这就是一对多映射的例子,学完vector就可以轻松解决这个问题了。

2、vector的定义

vector<储存的类型> 容器名
如:
储存int型的值 vector v;
储存double型的值 vector v;
储存string型的值 vector v;
储存结构体或者类的值的值 vector<结构体名> v;

当然也可以定义vector数组:
储存int型的值 vector v[n];
储存double型的值 vector v[n];
等等,n为数组的大小

3、vector常用的成员函数

//这些都是必会的成员函数size()//返回返回容器中元素个数begin()//返回头部迭代器end()//返回尾部+1迭代器rbegin()//返回逆首部迭代器rend()//返回逆尾部-1迭代器front()//返回首个元素back()//返回尾部元素push_back()//在末尾添加一个元素emplace_back()//和push_back()是一样的作用pop_back()//弹出最后一个元素empty()//判断是否为空insert()//在指定位置插入元素erase()//在指定位置删除元素clear()//清空容器

详细解析:
(1)size()
size()是最常用的成员函数了,常用于vector的遍历和元素个数的查询

(2)push_back()
除了初始化以外,push_back()是vector最重要的修改函数了,复杂度为O(1),而insert()的复杂度为O(n),差距明显

(3)front()、back()
查询首元素和未元素,其实通过随机访问,v[0]、v[v.size()-1]是可以达到相同效果的,用front()和back()显得专业点

(4)begin()、end()
通常用来方便排序的,也可以用来遍历,但没必要,通过下标遍历更简单快捷,rbegin()、rend()则可以用来逆序排序

(5)insert()
insert (position, x );
insert (position, n, x );
insert (position, first, last );
插入新的元素,
第一个函数,在迭代器指定的位置前插入值为x的元素
第二个函数,在迭代器指定的位置前插入n个值为x的元素
第三个函数,在迭代器指定的位置前插入另外一个容器的一段序列迭代器first到last
复杂度很高,迫不得已不使用

(6)erase()
erase ( position );
erase (first, last );
删除元素或一段序列
同样地,复杂度很高,迫不得已不使用

示例代码:

#include//c++标准头文件,可以使用cout,cin等标准编译用法#include//使用vector时需要的头文件 #include//包含许多内置函数,如排序、倒置、交换等函数 using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,map,set,vector,queue时都要使用//遍历函数 void print(auto v){for(auto c:v){cout<<c<<' ';}cout<<endl;}int main(){vector<int> v;//定义一个 int型vector v.emplace_back(3);v.emplace_back(4);v.emplace_back(1);v.emplace_back(2);cout<<"现在有的元素 :";print(v);cout<<endl;cout<<"v.front()="<<v.front()<<endl;cout<<"v.back()="<<v.back()<<endl;cout<<endl;//排序sort(v.begin(),v.end());cout<<"排序后 :";print(v);cout<<"v.front()="<<v.front()<<endl;cout<<"v.back()="<<v.back()<<endl;cout<<"v.size()="<<v.size()<<endl;cout<<endl;//插入5、6 v.insert(v.begin()+2,{5,6}); cout<<"插入5、6后: ";print(v);cout<<endl;//倒置reverse(v.begin(),v.end());cout<<"倒置后: ";print(v);cout<<endl;//逆序排序 sort(v.rbegin(),v.rend());cout<<"逆序排序后 :";print(v);//判断是否为空cout<<"v.empty()="<<v.empty()<<endl; cout<<"(v.size()==0)="<<(v.size()==0)<<endl;cout<<endl;v.clear();cout<<"v清空后"<<endl; cout<<"v.empty()="<<v.empty()<<endl; cout<<"(v.size()==0)="<<(v.size()==0)<<endl;} 

运行结果:

现在有的元素 :3 4 1 2v.front()=3v.back()=2排序后 :1 2 3 4v.front()=1v.back()=4v.size()=4插入56: 1 2 5 6 3 4倒置后: 4 3 6 5 2 1逆序排序后 :6 5 4 3 2 1v.empty()=0(v.size()==0)=0v清空后v.empty()=1(v.size()==0)=1

4、vector的三种遍历方法

(1)迭代器iterator

代码:

#include#includeusing namespace std;int main(){vector<int> v;//定义 v.emplace_back(1);//插入元素1 v.emplace_back(3);//插入元素3v.emplace_back(2);//插入元素2vector<int>::iterator it;//使用迭代器for(it=v.begin();it!=v.end();it++){cout<<*it<<' ';} } 

运行结果:

1 3 2

(2)下标遍历

代码:

#include#includeusing namespace std;int main(){vector<int> v;//定义 v.emplace_back(1);//插入元素1 v.emplace_back(3);//插入元素3v.emplace_back(2);//插入元素2for(int i=0;i<v.size();i++){cout<<v[i]<<' ';}} 

运行结果:

1 3 2

(3)foreach遍历

代码:

#include#includeusing namespace std;int main(){vector<int> v;//定义 v.emplace_back(1);//插入元素1 v.emplace_back(3);//插入元素3v.emplace_back(2);//插入元素2for(int c:v){cout<<c<<' ';}} 

运行结果:

1 3 2

两种逆序遍历:
代码:

#include#includeusing namespace std;int main(){vector<int> v;//定义 v.emplace_back(1);//插入元素1 v.emplace_back(3);//插入元素3v.emplace_back(2);//插入元素2//迭代器法 vector<int>::reverse_iterator it;//使用迭代器for(it=v.rbegin();it!=v.rend();it++){cout<<*it<<' ';} cout<<endl;//下标遍历法for(int i=v.size()-1;i>=0;i--){cout<<v[i]<<' ';} } 

运行结果:

2 3 12 3 1

foreach虽然简单易用,但是不支持逆序遍历

有小伙伴发现dev不能编译部分代码,那是因为dev还未支持c++11,可以看这篇文章解决
dev使用c++11教程

是不是很简单呢?

刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!!!

文章尚有不足,欢迎大牛们指正

感谢观看,点个赞吧

来源地址:https://blog.csdn.net/weixin_52115456/article/details/126024253

--结束END--

本文标题: c++ vector用法 入门必看 超详细

本文链接: https://www.lsjlt.com/news/441779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c++ vector用法 入门必看 超详细
    1、vector的作用 vector是最常用的容器之一,功能十分强大,可以储存、管理各种类型的数据。在很多情况下可以用来代替功能比较局限的普通数组,因为我们知道,普通数组只能实现一对一的映射而不能实现...
    99+
    2023-10-24
    c++ 算法 数据结构
  • c++中queue用法超详细讲解(入门必看!)
    目录1、queue的作用2、queue的定义3、queue的成员函数总结1、queue的作用 说到queue,大家一定会想到stack,同样是简单易用的数据结构之一。queue就是队...
    99+
    2022-11-13
    c++中queue的用法 c++ queue操作 C++ queue
  • C++入门之vector使用详解
    目录前言创建对象迭代器数据插入数据删除容量操作总结前言 兜兜转转,我们来到了C++的vector章节,今天就讲讲怎么使用vector吧. vector的本质就是一个线性的顺序表,只不...
    99+
    2024-04-02
  • qemu的详细资料大全(入门必看!!!)
    qemu介绍 qemu是一个虚拟机,或者说是模拟器,类似VMware。主要对单片机或者嵌入式常用的一些处理器模拟,嵌入式开发中使用广泛,比如arm,sparc,riscv等架构处理器。 对于每种架构处理器的模拟,qemu都是一个单独的exe...
    99+
    2023-09-25
    eclipse java ide qemu qemu stm32
  • C++超详细讲解模拟实现vector
    目录1. 模拟实现vector2. vector常用接口2.1 reserve2.2 resize2.3 push_back2.4 pop_back()2.5 insert2.6 e...
    99+
    2024-04-02
  • Java链表入门(超详细)
    Java链表入门 超详细 什么是链表创建链表1. 创建一个结点2. 插入一个结点-- 头插-- 尾插-- 指定位置插入 3.查找是否包含关键字key是否在单链表当中4.删除元素--删除...
    99+
    2023-09-08
    链表 java 数据结构
  • C/C++ 开发神器CLion使用入门超详细教程
    CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE,它是以IntelliJ为基础设计的,同时还包含了许多智能功能来提高开发人员的生产力。 Cl...
    99+
    2024-04-02
  • Android超详细SplashScreen入门教程
    这次的Android系统变化当中,UI的变化无疑是巨大的。Google在Android 12中采取了一种叫作Material You的界面设计,一切以你为中心,以你的喜好为风格。相信...
    99+
    2024-04-02
  • (超详细)Jupyter Notebook入门教程
    Jupyter Notebook入门教程 0. 前言 Jupyter Notebook是一款创建和分享计算文档的网络应用程序。它提供了一种简单、流线型、以文档为中心的体验。由于它可以同时显示丰富的文...
    99+
    2023-09-13
    jupyter python
  • ASP Web.config转换入门:新手必看的详细解析
    1. Web.config文件概述 Web.config文件是ASP网站的配置文件,它是一个XML文件,位于网站的根目录下。Web.config文件包含了网站的各种配置信息,包括安全配置、连接字符串、应用程序设置等。这些配置信息可以被A...
    99+
    2024-02-12
    ASP Web.config 配置 安全 连接字符串 应用程序设置
  • C++入门之vector的底层实现详解
    目录前言定义初始结构声明构造函数容量有关操作获取有效数据大小size()获取数据容量capacity()增加容量reserve()重置大小resize()迭代器数据操作尾插push_...
    99+
    2024-04-02
  • C++入门笔记之std::vector容器详解
    目录前言1. vector的构造函数原型: 2. vector的赋值函数原型:3. vector的容量和大小函数原型:4. vector的插入和删除函数原型:5. vector的存取...
    99+
    2024-04-02
  • Java 泛型超详细入门讲解
    目录1、什么是泛型2、泛型是怎么编译的泛型的编译机制:擦除机制1、什么是泛型 泛型其实就是将类型作为参数传递,泛型允许程序员在编写代码时使用一些以后才指定的类型 ,在实例化该类时将想...
    99+
    2024-04-02
  • 新手必看Android Studio入门详解
    上篇文章已经说过了Android Studio的安装配置,从这里开始我们就来完成第一个Android项目吧! 如何安装配置还不太熟悉的可以参考这篇文章:Android Studio...
    99+
    2024-04-02
  • Android Studio入门级教程(详细)【小白必看】[通俗易懂]
    Android Studio如何使用 本文主要讲解一下Android Studio使用方法 步骤: 1.建立项目 首先点击new——new project新建项目 选择想要创建的Android 的模...
    99+
    2023-09-21
    android studio android ide 开发语言 java
  • Servlet从入门到精通(超级详细!)
    目录概述入门案例创建Servlet程序注解方式配置Servlet程序配置文件方式配置Servlet程序(提供web.xml)测试Servlet的继承结构Servlet的生命周期ini...
    99+
    2024-04-02
  • php在windows使用grpc和protobuf入门(超详细)
    背景:php作为客户端使用grpc和protobuf调用其他服务 1、自己先了解:grpc、protobuf 2、环境:php7.3、composer 设置php全局变量 php -version查看PHP版本是php7.3.4nts...
    99+
    2023-09-24
    php 开发语言
  • Tomcat服务器入门超详细教程
    目录一,Tomcat的一些概念–1,服务器–2,web服务器–3,Tomcat服务器二,使用Tomcat–1,下载安装–2,启动&关闭–3,测试三,Tomcat目录结构–1,...
    99+
    2024-04-02
  • java.util.vector中的vector的详细用法
    java.util.vector中的vector的详细用法 ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; [@more@] public cl...
    99+
    2023-06-03
  • idea部署Tomcat详解(超详细新手入门)
    javaWeb学习笔记记录 文章目录 1、创建Web项目2、配置TomcatTomcat控制台乱码问题 我是用的是2021专业版idea编辑器 1、创建Web项目 首先创建一个普通的...
    99+
    2023-09-21
    tomcat intellij-idea java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作