C++ 相当于 Java 的 System.arraycopy

2024-04-30

我正在尝试移植一些大量使用 System.arraycopy 方法的 Java 代码,并想知道 C++ 中是否有等效的方法。基本上我想要有 n 个字节数组并将它们组合成一个大数组。每个初始数组的长度都可以是可变的,所以我不想经历计算结束数组长度然后一次填充整个数组一个位置的麻烦,因为这感觉相当慢,我确信这一点操作得到了优化。但是,我找不到这个优化是什么(尽管我可能使这个优化变得比应有的更复杂)。

这里有一些伪(Java)代码来说明我想要做什么。

byte[] a = new byte[]{0x00, 0x01, 0x02};
byte[] b = new byte[][0x03, 0x04, 0x05];
byte[] ab = new byte[a.length+b.length];
System.arraycopy(ab, 0, a, 0, a.length);
System.arraycopy(ab, a.length+1, b, 0, b.length);
//Now, I would expect ab to look like {0x00, 0x01, 0x02, 0x03, 0x04, 0x05}

就像我说的,这在 C++ 中可能很简单,但我会做很多很多次,并希望确保我尽可能高效地做这件事。


给定 a_len 和 b_len (包含 a 和 b 的字节长度),以及足够大的 dst 缓冲区来容纳两个数组,您可以使用 memcpy。注意:这还取决于 dst 被声明为指向字节大小数据的指针。

memcpy( dst, a, a_len );
memcpy( dst+a_len, b, b_len );

这对于原始类型很有效(因为看起来您正在复制字节数组)...如果您需要复制对象,请查看 std::copy()。

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

C++ 相当于 Java 的 System.arraycopy 的相关文章

随机推荐

  • Matlab 中二维插值的函数形式

    我需要从二维数据数组构造一个插值函数 我需要返回实际函数的东西的原因是 我需要能够将函数作为我需要进行数值积分的表达式的一部分进行计算 因此 interp2 并没有解决这个问题 它不返回函数 我可以使用 TriScatteredInterp
  • stdClass 到数组?

    i have stdClass Object 0 gt stdClass Object one gt aaa two gt sss 1 gt stdClass Object one gt ddd two gt fff 2 gt stdCla
  • 如何从 TextInputLayout 中删除底部填充

    第一张图就是我想要的 第二张图是我实现的 正如您所看到的 TextInputLayout 的底部有一个填充 这使得灰色背景溢出超过 edittext 行 请不要建议负边距或填充 因为它在较新的 API 中不起作用 这是我为第一个文本输入布局
  • 插入排序 C#

    你们能帮我完成 C 中的基本插入排序吗 我有一个数组中的姓名和居住城市列表 需要通过比较居住城市来对该数组进行排序 列表必须按字母顺序排序 比较器已经设置完毕并可以工作 我只是对插入排序器编程有点迷失 因为这是我们第一次使用这种排序方法 到
  • Dart:当两个或多个任务等待同一个 Future 时会发生什么

    在 Dart 中 当两个或多个任务等待同一个 Future 时 当 Future 完成时 任务是否按照执行等待的顺序获得通知 运行 即第一个执行等待的任务是第一个运行的 这段代码保证输出2 int res 0 Future
  • ARKit - 如何在另一个 SCNNode 中包含 SCNText(语音气泡)

    我正在尝试在 ARKit 的语音气泡中创建一个带有简单文本的报价生成器 我可以用文本显示语音气泡 但文本始终从中间开始并溢出到语音气泡之外 任何帮助使其在语音气泡的左上角对齐并包裹在语音气泡内的帮助将不胜感激 Result Classes
  • 为什么 C# 在基本构造函数之前设置私有变量,而 VB.NET 却相反?

    有一个问题是比较 C 代码和 VB NET 看似相同的代码之间的结果完全不同 我写了一个程序 允许两个类 打架 无论出于何种原因 C 总是获胜 VB NET 有什么问题 https stackoverflow com questions 7
  • 从 Android 联系人中检索名字和姓氏结果为“1”和“null”

    我使用下面的代码从 android 联系人中检索名字和姓氏 DISPLAY NAME 返回联系人的姓名 而名字和姓氏分别返回 1 和 null 以下是代码 ContentResolver cr getContentResolver Curs
  • 如何在网页中进行字体抗锯齿?

    我一直在研究如何在网页上执行字体抗锯齿 以下是我找到的一些解决方案 webkit font smoothing属性 它似乎只适用于最新的浏览器 我没有尝试过 Google Font API 这很棒 而且易于使用 我想知道如何离线使用它 一个
  • PHP 中的冒泡排序实现? [复制]

    这个问题在这里已经有答案了 我需要用 PHP 做一个冒泡排序算法 我想知道是否有人有我可以使用的好例子 或者一个可以做到这一点的开源库 我在一个集合 数组 中有几个空格 我想用对象 一个人 填充这些空间 所以没有空间可以有男性和女性 这就是
  • 计算 scikit-learn 逻辑回归模型的残差偏差

    有没有办法计算残差scikit learn 逻辑回归模型 http scikit learn org stable modules generated sklearn linear model LogisticRegression html
  • np.sqrt 对于非常大的整数的奇怪行为

    gt gt gt np version 1 7 0 gt gt gt np sqrt 10000000000000000000 3162277660 1683793 gt gt gt np sqrt 10000000000000000000
  • 如何模拟 Stripe 订阅续订失败? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试测试不同的 Stripe 订阅失败 具体来说 当卡最初被接受且订阅处于活动状态时 有效订阅被续订 但续订付款被拒绝 或者客户在订阅期间
  • 不接受 TableAdapter 中的参数

    我目前正在尝试设置我的 TableAdapters 但它不允许我使用参数 这使得它毫无用处 当我创建新查询时 SELECT users FROM users WHERE name LIKE name 它告诉我附近有一个 SQL 错误 我使用
  • Moq中的设置方法,模棱两可的调用

    我正在尝试使用 Moq 来模拟界面 public interface IMatchSetupRepository IEnumerable
  • 将 json 对象数组插入 postgres 的查询

    我有一张带字段的表fields json 我创建了一个函数来将记录插入到该表中 这是调用 select from add name Yes value yes name No value no name Neutral value neut
  • Swift 4.1 deinitialize 和 deallocate(capacity:) 已弃用

    我一直这样说来形成 CGPoint 的 C 数组 let arr UnsafeMutablePointer
  • Spring JUnit 测试未加载完整的应用程序上下文

    您好 我正在尝试使用 spring junit 测试用例 并且我需要加载完整的应用程序上下文 然而 junit 测试不会初始化完整的应用程序上下文 测试类 RunWith SpringJUnit4ClassRunner class Spri
  • 安装了 Xcode 命令行工具的 Mac OS X 中 clang-format 和 clang-format.py 位于何处?

    我很难在 Mac OS 10 8 5 上使用 Xcode 5 及其命令行工具找到 clang format 和 clang format py 我试过find name clang format py 没有运气 他们是否已经藏在某个地方了
  • C++ 相当于 Java 的 System.arraycopy

    我正在尝试移植一些大量使用 System arraycopy 方法的 Java 代码 并想知道 C 中是否有等效的方法 基本上我想要有 n 个字节数组并将它们组合成一个大数组 每个初始数组的长度都可以是可变的 所以我不想经历计算结束数组长度