什么是动态数组?(a dynamic array?)

动态数组是计算机编程中使用的一种数据结构,它将多个计算对象作为一个组保存,并且可以随意调整大小以适应不同数量的对象。该组保存在单个连续内存块中,因此对元素的访问既高效又快速。动态数组也称为向量或列表,具体取决于使用它们的计算机语言。尽管有这些名称,但任何特定的列表或向量都可能不是动态数组,因为列表和向量的实现方式可能不同于数组,也可能不同于其他数组。...

动态数组是计算机编程中使用的一种数据结构,它将多个计算对象作为一个组保存,并且可以随意调整大小以适应不同数量的对象。该组保存在单个连续内存块中,因此对元素的访问既高效又快速。动态数组也称为向量或列表,具体取决于使用它们的计算机语言。尽管有这些名称,但任何特定的列表或向量都可能不是动态数组,因为列表和向量的实现方式可能不同于数组,也可能不同于其他数组。

C++ contains a single dynamic array class called vector, which resides in a group of classes called the standard template library.

C++包含一个名为vector的动态数组类,它位于一组称为标准模板库的类中。支持该类的数组可以由迭代器或索引访问。它按需调整大小的能力是一个很大的优势,但它可能会诱使程序员产生错误的安全感,因为它不像看上去那么健壮。支持向量的动态数组无法确保访问请求有效。与静态数组一样,如果程序试图访问尚未分配给动态数组的内存,则动态数组可能存在边界检查和内存损坏问题。

Java包含三个不同的动态数组类:Vector、ArrayList和CopyOnWriteArrayList。数组中的元素仅由索引访问,尝试访问数组外的索引通常不会导致内存损坏问题。java vector类大致相当于C++向量类,并且不同步以允许多线程访问。相比之下,ArrayList和CopyOnWriteArrayList都是线程安全的。在这三个类中,CopyOnWriteArrayList是劳动强度最大的类,因为每次向数组写入新值时,它都会完全重新创建动态数组。

动态数组的实现方式基本相同,与所涉及的计算机语言无关,但根据特定的语言,可能会在其上构建其他功能。与静态数组一样,动态数组不限制可以存储在其中的对象类型,只要它们都是相同类型的对象。程序员永远不需要直接访问动态数组;它总是可以通过一个封装数组以便于使用的类来完成。正确使用这些数组可以帮助程序员对代码内部的数据进行组织,还可以创建易于维护的可理解代码。

  • 发表于 2021-12-10 12:25
  • 阅读 ( 358 )
  • 分类:互联网

你可能感兴趣的文章

静止的(static)和动态内存分配(dynamic memory allocation)的区别

...内存,内存大小就可以更改。 目录 1. 概述和主要区别 2. 什么是静态内存分配 3. 什么是动态内存分配 4. 静态和动态内存分配的相似性 5. 并排比较-静态和动态内存分配的表格形式 6. 摘要 什么是静态内存分配(static memory allocation)...

  • 发布于 2020-10-11 12:09
  • 阅读 ( 1013 )

excel中频率函数的使用

...率分布,并稍加修改,频率百分比。 频率函数的作用是什么? Excel的频率数组函数允许您计算数据集的频率分布。提供数字数据集(即用作源的实际单元格)、bin阈值列表(即对数据进行排序的类别),然后按Ctrl+Shift+Enter。 ...

  • 发布于 2021-04-04 02:54
  • 阅读 ( 245 )

数组列表(array list)和链表(linked list)的区别

...存储机制。指针是在内存中定位数据位置的关键元素。 动态数组和链表 我们已经讨论了这两种存储机制是如何放入数据的,我们可以为数组列表的内部存储方案提供一个术语“动态数组”。它只是一个接一个地放置数据块(因...

  • 发布于 2021-06-25 00:29
  • 阅读 ( 323 )

数组(array)和数组表(arraylist)的区别

什么是数组和数组列表(array and arraylist)? Array和ArrayList都是Java程序中常用的基于索引的数据结构。从概念上讲,ArrayList在内部是由数组支持的,然而,理解两者之间的区别是成为优秀Java开发人员的关键。这是最基本的一步,尤...

  • 发布于 2021-06-25 03:21
  • 阅读 ( 693 )

数组(array)和一串(string)的区别

...式非常不同。本文介绍数组和字符串之间的无偏比较。 什么是数组(an array)? 许多应用程序都涉及大量数据,要处理如此大量的数据,我们需要一种强大的数据类型,以方便高效地存储和访问数据项。这就是数组出现的地方。...

  • 发布于 2021-06-25 10:17
  • 阅读 ( 1397 )

堆栈(stack)和数组(array)的区别

...用数组实现堆栈。然而,两者之间的主要区别是准入。 什么是堆栈(stack)? 堆栈是一种线性的、类似列表的数据结构,由元素的顺序集合表示,类似于物理堆栈或一堆,其中项目像一堆书一样排列在彼此的顶部。项目的排列方...

  • 发布于 2021-06-25 15:17
  • 阅读 ( 331 )

数组(array)和指针(pointer)的区别

...针有助于访问内存和操作内存地址。 覆盖的关键领域 1.什么是数组–定义,功能2.什么是指针–定义,功能3.数组和指针之间的关系–关联概述3.数组和指针之间的差异–关键差异的比较 关键术语 数组,指针 什么是数组(an array)...

  • 发布于 2021-06-30 23:59
  • 阅读 ( 688 )

数组(array)和链表(linked list)的区别

...因此,可以在运行时增加或减少它。 覆盖的关键领域 1.什么是数组-定义,功能2.什么是链表-定义,功能3.数组和链表的区别是什么-关键区别的比较 关键术语 数组,链表 什么是数组(an array)? 数组是具有固定大小的数据结构。...

  • 发布于 2021-07-01 09:29
  • 阅读 ( 220 )

数组表(arraylist)和c中的数组#(array in c#)的区别

...间System.collectionarraylist与c#(表格形式)中数组的比较表什么是c中的arraylist#(arraylist in c#)?使用list接口初始化数组列表。它被认为是C3语言中最灵活的数据之一。编程语言中的集合是存储数据并允许程序员检索的特殊类。ArrayList...

  • 发布于 2021-07-07 11:47
  • 阅读 ( 300 )

数组(array)和c中的arraylist#(arraylist in c#)的区别

什么是数组(an array)? 数组是相似数据的连续集合,可以根据“索引”进行访问。它是最简单的数据结构类型,其中元素存储在一个连续的内存位置。 在数组中,索引从零开始,所以要访问数组的第一个元素“numarray”,应该...

  • 发布于 2021-07-08 17:54
  • 阅读 ( 192 )