当前位置: 首页 > news >正文

vector的学习使用(1)

C++库中给了许多vector的接口如下,学习vector先认识一些常用的接口用法,然后模拟实现加深理解。

首先我们先简单讲解一下vector的接口用法,它底层是一段动态开辟的空间,然后它提供了许多接口:

1.构造

第一个first是默认构造,第二个是用4个100进行构造,第三个是运用迭代器进行构造,第四个是拷贝构造。

2.=运算符重载

直接类比内置类型的赋值。实际上该运算符的实现是利用了拷贝构造而且是深层拷贝。

3.迭代器

迭代器的使用和string比较类似,都是一个函数。

4.size

size函数时返回vector中元素的数量。使用是可以这样写:

5.resize

resize是改变空间大小并初始化,但是一般不进行缩容。我们调试来看,库中给的原型如下:

如果我们不写会默认用缺省值初始化进行初始化,写的话利用该值进行初始化。

6.reserve

与resize不同,它进行扩容时不会进行初始化,仅仅会扩容,我们调试来看:

库中的原型函数如下:

7.【】访问和at

与stringl类似,vector容器也支持进行下标访问,at与[]类似,但是它们区别是at发生错误时抛异常但是[]直接报错.

8.assign

assign的作用是追加元素,支持两种写法一种是迭代器另一种是直接给要赋值的个数和该值。

9.push_back和pop_back(尾插和尾删)

push_back的作用就是尾插,pop_back的作用是尾删.

10.insert和erase

insert的作用是在指定位置之前插入,vector给出的方法需要用迭代器实现。支持单个值插入,也支持多个值插入,也支持从别的vector中进行插入。我们演示第三个:

erase和insert类似,也是利用迭代器进行删除。

但是这里需要主要它们使用时会有迭代器失效的问题,原因是我们假如it指向下标0,那么我们插入之后it是否还是指向下标0呢?vs这里是强制检查进行报错,如果我们想要连续使用it需要对它进行重新赋值。我们可以看到如果我们不对它进行重新赋值,那么It使用一次后就会失效掉,再次使用it会进行报错。

我们对it进行赋值即可,这里我认为insert插入是一个一个向后移动元素,所以insert之后还是指向下标0的,但是如果是erase的话,如果我们刚好删除最后一个元素,it刚好会越界访问,为了防止这种情况,vs对它进行强制检查,但是有的编译器下并不会进行强制检查,但是为了平台的统一性,我们统一对it进行重新赋值后使用。erase与Insert类似,是相同的道理。

http://www.dtcms.com/a/108199.html

相关文章:

  • Cjson的创建和解析
  • 【Python】KNN:K-NearestNeighbor 学习指南
  • Vue3+Cesium+vite 入门- 项目搭建
  • HAL库 通过USB Boot进行APP程序升级
  • window11 通过cmd命令行安装 oh my zsh 的教程
  • VMware上的windows虚拟机安装使用Docker方法
  • MySQL篇(二): 核心知识深度聚簇解析:索引、非聚簇索引、回表查询、覆盖索引、超大分页处理、索引创建原则与索引失效场景
  • TDengine 权限管理与安全配置实战(二)
  • Redhat8.10 离线安装Snipe-IT v8.0.4 版本
  • 计算机网络中科大 - 第1章 结构化笔记(详细解析)
  • PostgreSQL pg_repack 重新组织表并释放表空间
  • NumPy的应用
  • 【数据结构】图的基本概念
  • 基于Django框架的基金数据可视化平台(源码+lw+部署文档+讲解),源码可白嫖!
  • 客户机用vscode连接局域网内主机
  • springboot去读yml配置文件中的属性值
  • LLM大模型学习系列——总纲
  • 瑞数信息发布《BOTS自动化威胁报告》,揭示AI时代网络安全新挑战
  • 深入解析 Java 8 Function 接口:函数式编程的核心工具
  • react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析--react17
  • Windows下部署AgentGPT
  • C/C++与JavaScript的WebAssembly编程(一)
  • RNN模型及NLP应用(5/9)——多层RNN、双向RNN、预训练
  • js防抖函数防抖无效的解决方法
  • 14.网络套接字TCP
  • 5.好事多磨 -- TCP网络连接Ⅱ
  • LabVIEW多线程
  • API vs 网页抓取:获取数据的最佳方式
  • PyTorch中.pth文件的解析及应用
  • Linux的TCP连接数到达2万,其中tcp_tw、tcp_alloc、tcp_inuse都很高,可能出现什么问题