Vector:C++社区最畅销的数组Pro版本

 2024-03-01 04:04:38  阅读 0

数组instanceof_数组实现lru_用数组实现insert函数

数组实现lru_数组instanceof_用数组实现insert函数

学过C++的人都知道数组是个好东西。 数组是具有一定顺序关系的对象的集合。 当我们考虑存储和处理大量相同类型的数据时 -

既然两位女神都同意使用了,那我们就得自己安排一下了。

整理完之后,看看下面的代码片段,看看是不是你的日常:

数组instanceof_数组实现lru_用数组实现insert函数

俗话说,写一个bug需要3分钟,调试需要3个小时。 这些蜜虫的出现确实让我们新手摸不着头脑。

毕竟,出现这些错误是因为在定义数组时,必须指定其大小。 数组的大小一旦确定,就不能随意向数组中添加元素。 因此,特别容易出现下标越界的问题。 另外,我们不能将一个数组的内容复制到其他数组作为初始值,或者给其他数组赋值。

为了克服数组的这些缺点,C++标准库提供了封装的动态数组。 可以存储任何类型的数据,并且容量可以自动扩展。 堪称数组的专业版! 接下来我们就来学习一下类型的使用吧!

添加头文件

步骤0

数组instanceof_数组实现lru_用数组实现insert函数

结构

步骤1

它是一个类模板。 定义类时,类模板会提取一些类型信息并用模板参数替换,从而使类更加通用。

定义动态数组的形式为:

数组对象名称(数组长度)

我们以int类型为例,看一些构造的例子。

数组instanceof_用数组实现insert函数_数组实现lru

添加和删​​除元素

第2步

最基本的内存模型是栈结构,后进先出,可以通过下面的手绘图直观的表示出来⬇️

用数组实现insert函数_数组实现lru_数组instanceof

具体代码实现如下。

数组实现lru_用数组实现insert函数_数组instanceof

获取长度

步骤3

经过一系列的pop和push操作之后,现在处于什么状态呢? 我们可以调用size()函数来获取向量中元素的函数,并调用empty()函数来检查向量是否为空。

用数组实现insert函数_数组instanceof_数组实现lru

通过下标访问元素

步骤4

对于向量c,我们可以使用c.at(index)访问它的元素,其中index是元素的下标。

数组实现lru_数组instanceof_用数组实现insert函数

使用迭代器

步骤5

()是一种数据类型,用于遍历容器中的所有元素。 它的定义如下:

::

(定义一个T类型的迭代器)

说白了,迭代器就是“智能”指针的封装版本。 关于迭代器的使用,我们来看几个例子。

用数组实现insert函数_数组实现lru_数组instanceof

我们还可以使用迭代器在特定位置插入和删除元素。 这两个操作分别对应擦除功能。 具体用法如下。

清除所有数据

步骤6

对于向量c,只需调用c.clear()即可清除c中的所有数据~

数组instanceof_用数组实现insert函数_数组实现lru

数组instanceof_用数组实现insert函数_数组实现lru

数组instanceof_用数组实现insert函数_数组实现lru

这个怎么样? 看了这么多介绍,你觉得超级无敌好用吗? 最后我们总结一下数组的pro版本相比数组有哪些改进。

尺寸可以改变吗?

它是变长容器,即容器容量可以根据数据的插入和删除而重新构建,但数组和数组具有定长容量。

初始化

数组不能将数组的内容复制到其他数组作为初始值,也不能使用数组给其他数组赋值,但向量可以。

提供更好的数据访问机制,即可以使用AT访问方式,使得访问更加安全。 数组只能通过下标来访问,这在程序设计时更容易造成访问错误。

提供了获取大小和null判断的机制,而数组只能通过遍历或者通过附加变量来记录数组的大小。

提供了一种可以动态插入和删除元素的机制,但是数组和数组做不到这一点,或者如果数组和数组需要完成这个功能,就需要自己实现。

深度搜索:内存中的位置

C++ 中的数组是内置数据类型,存储在堆栈中。 内存的分配和释放完全由系统自动完成; 数组存储在堆中,STL库中的程序负责内存分配和释放。 它很容易使用。

Pro版本比其他版本都好,唯一的缺点是它贵一点(无可辩驳的事实)。 享受便利需要付出昂贵的时间。 执行效率比数组低很多,主要是扩容过程消耗大量时间。 那么什么时候该用,什么时候该用数组,还是要具体问题具体分析。

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码