删除动态数组的一部分并增加其他部分

2024-01-06

我需要一个动态数组,因此我需要通过指针分配必要的内存量。让我想知道哪个是一个好的解决方案,是 C++ 能够执行以下操作:

int * p = new int[6];

它分配必要的数组。我需要的是,之后我想增加这个数组的一些部分。一个(有缺陷的)例子:

int *p1 = &p[0];
int *p2 = &p[2];
int *p3 = &p[4];
// delete positions p[2], p[3]
delete [] p2;
// create new array
p2 = new int[4];

我不知道如何实现这种行为。

EDIT: std::vector不适合我,因为我需要插入/删除的时间k元素与数量成正比k而不是存储在中的元素数量std::vector.

在一般情况下,使用指针,我会指向任何非连续内存区域的开始,并记录它存储的元素数量。从概念上讲,我会将大数组分成许多小数组,并且不一定在内存中的连续空间中(删除会创建“空洞”,而分配不一定会“填充”它们)。


您可以通过使用来实现此行为std::vector:

std::vector<int> v(6);         // create a vector with six elements.
v.erase(v.begin() + 2);        // erase the element at v[2]
v.insert(v.begin() + 2, 4, 0); // insert four new elements starting at v[2]

实际上,任何时候你想使用动态分配的数组,你应该首先考虑使用std::vector。它并不能解决所有问题,但与其他 C++ 标准库容器一起,它绝对可以解决大多数问题。

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

删除动态数组的一部分并增加其他部分 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • Nivo 滑块:第一次显示时第一张图像缩放不成比例

    我在 div 中使用 Nivo Slider jQuery 插件 该 div 的尺寸比我正在显示的图像小 当滑块滑动到第二个图像时 图像上的图像会正确缩小 但是 当第一次显示第一个图像时 加载页面后立即 它仅在宽度上缩放 而在高度上不缩放
  • 如何重新映射 python 字典键

    我正在开发一个程序 该程序 除其他外 读取 CSV 文件 它以以下形式存储为字典数组 col1 data1a col2 data2a col1 data1b col2 data2b 对于每一行 作为其他处理的一部分 我需要将这些键重新映射到
  • 更改 UITableView 的节页眉/页脚标题而不重新加载整个表视图

    有没有办法在不调用的情况下重新加载表视图的节页眉 页脚 tableView reloadData 事实上 我想在表视图的部分页脚中显示表格视图部分中的单元格数量 表视图是可编辑的 我使用删除或插入行 insertRowsAtIndexPat
  • Android:将 PNG ByteArray 写入文件

    我已将图像文件读入 ByteArray 但如何将其写回 我的意思是将 ByteArray 保存到文件系统中的图像文件 首选 PNG 格式 我的代码从 PNG 文件到 ByteArray ByteArrayOutputStream strea
  • 使用 Quartz 跨多个无状态应用程序服务器调度单个作业

    我在负载均衡器后面有一层相同的应用程序服务器 出于操作原因 我有一个限制 即两个应用程序服务器上的应用程序配置必须相同 以便可以轻松添加和删除节点 所有应用程序服务器共享相同的数据库 应用程序服务器不会 不会集群 到目前为止 这一切都运行良
  • 在片段中初始化字体

    我有这一行 Typeface font Typeface createFromAsset getAssets fonts Delius Regular ttf but the getAssets 参数似乎带来了一些错误 它带有可怕的红线下划
  • 为什么我们要在 YARN 中配置 mapred.job.tracker?

    据我所知 YARN 被引入并取代了 JobTracker 和 TaskTracker 我看过一些Hadoop 2 6 0 2 7 0安装教程 他们正在配置mapreduce framework name作为纱线和mapred job tra
  • 在运行时调整 char[] 的大小

    我需要调整大小char array size to char array new size 在运行时 我怎样才能做到这一点 如果您正在使用std vector
  • ASP.NET MVC 3:具有继承/多态性的 DefaultModelBinder

    首先 对这篇大文章 我尝试先做一些研究 以及针对同一问题的技术组合 ASP NET MVC 3 Ninject 和 MvcContrib 表示歉意 我正在使用 ASP NET MVC 3 开发一个项目来处理一些客户订单 简而言之 我有一些继
  • 有没有办法生成 DOCX 文件的缩略图?

    我已经使用像 ASPOSE 这样的 付费 工具完成了这项工作 但我很好奇是否有任何开源工具可以做到这一点 我确信可能有工具可以做到这一点 但如果您可以将文件转换为可以轻松光栅化的格式 那么可能值得探索 例如 将工作文档转换为 pdf 然后对
  • 对从 JSON 创建的数据框应用过滤条件

    我正在处理由 JSON 创建的数据帧 然后我想在数据帧上应用过滤条件 val jsonStr metadata key 84896 value 54 key 1234 value 12 val rdd sc parallelize Seq
  • 命名空间不能直接包含成员... + 类型或命名空间定义,或文件结尾预期错误

    我正在尝试编译适用于 Windows Phone 的 Sync Framework 4 0 的示例代码 但是我在几个文件中遇到了错误 这些文件之一是 if SERVER namespace Microsoft Synchronization
  • 我如何从密钥库中获取秘密?

    我想从 Azure 密钥保管库获取机密 我找到了下面的代码并尝试了它 但我因错误而失败 private String clientId i private String secret i KeyVaultClient client new
  • 我什么时候应该使用 out 参数?

    我不明白何时应该使用输出参数 如果我需要返回多个类型 我个人会将结果包装在新类型中 我发现使用它比使用 out 更容易 我见过这样的方法 public void Do int arg1 int arg2 out int result 在某些
  • 使用 php 发送带有附件的电子邮件

    我使用此代码使用 php 发送带有附件的电子邮件 但附件中存在一些错误 因为我收到了一封电子邮件并且附件出现在内容中 在我使用相同的代码并成功运行之前 为什么
  • 理解 Rust 中的线程安全 RwLock> 机制

    背景 I am 全新的Rust 昨天开始 我试图确保我理解正确 我正在寻找为 游戏 编写一个配置系统 并希望它能够快速访问但偶尔可变 首先 我想研究本地化 这似乎是静态配置的合理用例 因为我意识到这些东西通常不会 生锈 我想出了以下 工作
  • django ModelMultipleChoiceField 设置初始值

    我有以下代码 category forms ModelMultipleChoiceField label Category queryset Category objects order by name widget forms Selec
  • 有没有地方可以在一处获取 laravel `vendor` 文件夹?

    我意识到这就是作曲家的用途 但我不是特别喜欢它 这是有道理的 但让我恼火的是 laravel5 的 github 不能开箱即用 因为它是vendor目录有点大 不一定是 laravel5 尽管 laravel 确实需要它 我也很困惑为什么作
  • 如何在 Intellij IDEA 运行之前启用 Hibernate 字节码检测?

    在 gradle 中你可以使用以下方法来实现 apply plugin enhance buildscript repositories mavenCentral dependencies classpath org hibernate h
  • 删除动态数组的一部分并增加其他部分

    我需要一个动态数组 因此我需要通过指针分配必要的内存量 让我想知道哪个是一个好的解决方案 是 C 能够执行以下操作 int p new int 6 它分配必要的数组 我需要的是 之后我想增加这个数组的一些部分 一个 有缺陷的 例子 int