什么是无界数组?

2023-11-26

什么是无界数组?无界数组和动态分配数组有什么区别?与无界数组相关的常见操作有哪些? (就像我们有堆栈数据结构的弹出和推送)


无界数组可以(并且通常是)静态分配。

实现无界数组时的主要关注点是提供类似动态数组的自由来在运行时决定数组大小,而不会因运行时内存分配而造成性能损失。

以下内容摘自一篇关于无界数组的优秀文章简单地解释一下——

总体实施策略如下。我们维护一个固定长度的数组limit和一个内部索引size它跟踪数组中实际有多少元素。当我们添加一个新元素时,我们会递增size,当我们删除一个元素时,我们会递减size。棘手的问题是当我们已经达到了目标时如何继续limit并想添加另一个元素。此时,我们分配一个更大的新数组limit并将我们已有的元素复制到新数组中。

请注意,在运行时,直到size超过初始值limit无界数组不涉及动态分配。

Some features无界数组的(设计要求):

  • 获取或设置特定索引处的值(恒定时间)
  • 按顺序迭代元素(线性时间,良好的缓存性能)
  • 在数组末尾插入或删除元素(恒定摊销时间)

考虑到性能,与无界数组相关的唯一附加操作(与常规数组相比)是:

  • add_to_end()
  • delete_from_end()

允许修改无界数组的大小。

类似的操作Insert_in_middle() and Delete_in_middle()不提供请记住无界数组的主要设计原则,即性能。

欲了解更多详细信息,请查看此问题的答案question.

NOTE : Though the question specifically mentions dynamically allocated arrays, probably you might also want to checkout dynamic arrays. A good example of a dynamic-array is the C++ std::vector itself which addresses several of the same design principles as that of an unbounded array.

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

什么是无界数组? 的相关文章

  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • Minizinc:生成有效的转变

    希望有人能帮助我解决这个问题 最初的问题是生成有效的班次 如下所述 我有这样的数组 m m m o o l l m m m l m m m 具有固定长度 S 其中 m 是工作 o 是办公室 我自由了 我需要确保至少每 6m 就有两个 l 在
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • Excel:#CALC!使用 MAP 函数计算间隔重叠时出现错误(嵌套数组)

    我正在努力解决以下公式 它适用于某些情况 但不适用于所有情况 名字input有失败的数据集 得到一个 CALC 描述 嵌套数组 错误 LET input N1 0 0 N1 0 10 N1 10 20 names INDEX input 1
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas
  • C++从文件中读取整数并保存到数组中

    我正在制作一个仅从文本文件读取整数的程序 我想创建一个读取整数并将它们存储在数组中的函数 以便稍后可以使用该数组通过冒泡排序对它们进行排序 这是我到目前为止所得到的 但我得到的输出是一些随机的 803234 数字 void read int
  • 使用 UISearchBar 过滤数组

    我目前正在使用以下代码来过滤数组并将结果显示在我的 tableView 中 问题是 只有当搜索与确切的单词匹配时 才会返回结果 如何更改数组过滤器以在输入时搜索每个字符 let data Mango Grape Berry Orange A
  • JS:连接数组的数组

    我如何在数组的每个子成员和数组本身上使用 Array Join 来分隔父数组的元素 以及子数组的每个元素 let arr 1 2 3 4 5 6 console log arr join Output is 1 2 3 4 5 6 Pseu
  • 使用 Java 进行 MongoDB 查询。计算数组中的匹配项

    我在 Mongo 中存储了类似于以下内容的数据 LIST NAME a VALUE z NAME b VALUE y NAME c VALUE x NAME d VALUE w NAME e VALUE v NAME f VALUE u N
  • 读取文本文件并将列存储在数组中

    我的文件看起来像这样 01 01 5 00 1 50 7 50 02 01 4 00 3 00 12 00 02 02 3 00 4 00 12 00 03 01 4 50 3 00 13 50 03 01 7 50 2 50 18 75
  • 如何释放字符指针数组?

    我使用此方法将列表中的值转换为数组 以便在 execvp 系统调用中使用 char list2argarray struct shellvalue values int count char array char malloc count
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 合并 JavaScript 数组中的重复项

    我有一个愚蠢的问题 乍一看似乎很容易解决 但结果却很棘手 我有一个对象数组 每个对象都有两个属性 id 和 value id 2 value 10 id 4 value 3 id 2 value 2 id 1 value 15 我想编写一个
  • Turbo C 阵列问题

    我只是想问一些关于我的代码的事情 define LIM 40 main int day 0 float temp LIM clrscr do printf Enter temperature for day d day scanf f te
  • 在 Go 中,如何将结构体转换为字节数组?

    我有一个我定义的结构实例 我想将其转换为字节数组 我尝试了 byte my struct 但这不起作用 另外 我还被指出二进制包 http golang org pkg encoding binary 但我不确定我应该使用哪个函数以及应该如
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的

随机推荐

  • CanExecuteCommand 对性能有影响吗?

    使用 ICommand 对象的 CanExecuteCommand 对性能有何影响 该方法是否一遍又一遍地执行 我需要迭代大约 200 个对象的集合 根据这些对象决定是否应启用绑定到命令的按钮 CanExecuteCommand 是否会重复
  • 使用 JNA 的 C 回调使 JRE 崩溃

    我在 JNA 中处理回调时遇到问题 我正在尝试使用 C API 它使用回调来处理多个会话事件 登录 注销 连接问题 会话对象 称为sp session 是一个不透明的结构 所有回调都注册在sp session callbacks结构 根据
  • jQuery 分页 + Twitter Bootstrap

    我正在尝试修改 Jquery 分页 基于这个 Jquery 分页教程 demo 与很棒的 twitter bootstrap 一起工作 Twitter Bootstrap 的标准分页设置如下所示 因此这就是分页输出结构的目标 div cla
  • Android Studio 中的 NDK 集成错误

    我正在使用 Android studio 版本 1 3 1 并尝试通过转到 local proprties 并编写 ndk dir 来集成 NDK 但出现此错误 错误 任务 tesstwo compileReleaseNdk 执行失败 错误
  • Android 连续语音识别返回 ERROR_NO_MATCH 太快

    我尝试实现连续语音识别机制 当我开始语音识别时 我在 logcat 中收到以下消息 06 05 12 22 32 892 11753 11753 com aaa bbb D SpeechManager startSpeechRecognit
  • 如何在 Java 中比较字符串?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我一直在使用 我的程序中的运算符来比较到目前为止我的所有字符串 然而 我遇到了一个错误 将其中一个更改为 equals 相反 它修复了该错误 Is 坏的 什么时
  • 如何通过环境在 aurelia 中设置常量

    我希望将我的 API 基本 URL 更改为dev to prod 在 Angular I 用户中使用config json文件 后来使用注入到应用程序中grunt env 如果您使用奥里利亚 CLI 它将生成一个environments你的
  • 如何在代码编辑器中禁用自动完成代码语句?

    每次我打字if然后按空格键 Delphi 完成它if True then和上面一个新的空行 有没有办法去除this 自动完成 功能或至少编辑它以不创建新行 来自工具 选项 编辑器选项 代码洞察菜单中 取消选择代码模板完成下的自动完成复选框
  • 如何以精确的时间(即 10 毫秒)定期运行 Erlang 进程

    我想每 10 毫秒运行一次定期的 erlang 进程 基于挂钟时间 10 毫秒应该尽可能准确 正确的实施方法应该是什么 如果您想要真正可靠和准确的定期过程 您应该依靠实际的挂钟时间使用erlang monotonic time 0 1 如果
  • 如何运行 test/a.py 形式的单元测试?

    是否可以实现一个具有如下文件结构的Python项目 myproj a py b py c py test a py b py c py Note in particular that the test scripts under test
  • Mongodb - 使用 addToSet 的项目计数

    我分组依据organization并使用 addToSet来展现与众不同的machineIds与此相关的organization 我想计算machineIds对于每个organization 然而 下面的代码返回所有的计数machineId
  • flutter查询firestore中的多个集合

    我正在玩 flutter 但我遇到了 firestore 的问题 我无法弄清楚 假设我想检索客户的购买者历史记录 并且我有一个如下所述的 Firestore 因此我有一个 用户 集合 其中包含以下文档user id然后在其中 我有一个 产品
  • Identity 2.1 - 未找到 UserId 但之前可以使用

    该代码之前多次工作 但在 Identity 2 1 中为用户添加几个新属性后 它突然停止工作 尽管在调试器中可以看到 UserId 的值 但我收到了 UserId not found 错误 任何人都知道为什么会突然发生这种情况 至少看到这一
  • 窗口卸载事件的本地存储

    我使用本地存储来存储一些数据 用户发出 ajax 请求来获取信息 我将结果存储在存储中 以便下次他请求相同的信息时 我首先在存储中查看它是否存在 现在我意识到 将数据保存在内存中的对象中 并在需要时循环该数据 而不是循环本地存储 实际上更有
  • Delphi 的 WebSocket 客户端实现

    Delphi 有免费的 WebSocket 客户端实现吗 我只找到了这个 WebSockets Delphi 组件 但它不是免费的 这是我的开源库 https github com andremussche DelphiWebsockets
  • Django 2.1 - 'functools.partial' 对象没有属性 '__name__'

    我最近将 Django 从 2 0 7 升级到 2 1 1 出现了一个新错误 其中出现此错误 functools partial object has no attribute name 我想了解我的修复是否正确以及是什么导致了这个新错误的
  • 对核心数据实体进行排序的最佳方法是什么?

    我有一个完全正常工作的核心数据模型 但是当我使用获取请求返回数据时 它的顺序看似随机 对这些数据进行排序的最佳方法是什么 是使用核心数据模型中的另一个表 然后 查询 第一个表吗 或者是将数据拉入数组中 然后以这种方式排序 我不太确定如何做其
  • ggplot 函数在图例下方添加文本

    在 R 中 我想创建一个函数 它接受 ggplot 对象和一些文本并返回 ggplot 对象 方法是在图例下方添加文本 在图的右侧 同时将图例保留在右侧 myplot ggplot iris aes x Sepal Length y Sep
  • 单一来源项目结构有哪些缺点?

    我是目前公司的新人 正在从事由我的直接团队领导编写的项目 该公司通常不使用 C 但我的同事用 C C 编写了高效的代码 只有我们知道如何用 C 编码 我和我的领导 所以没有第三种意见可以涉及 在我对这个项目有了足够的了解之后 我意识到整个结
  • 什么是无界数组?

    什么是无界数组 无界数组和动态分配数组有什么区别 与无界数组相关的常见操作有哪些 就像我们有堆栈数据结构的弹出和推送 无界数组可以 并且通常是 静态分配 实现无界数组时的主要关注点是提供类似动态数组的自由来在运行时决定数组大小 而不会因运行