【问题标题】:Using memcpy to copy a range of elements from an 2d array [closed]使用 memcpy 从二维数组中复制一系列元素 [关闭]
【发布时间】:2021-04-10 17:57:36
【问题描述】:

假设我们有两个二维数组:

double matrix [64][100];
double array[64][32];

我们想使用 memcpy 将 32 个元素从 matrix[64][50:82] 复制到 array[64][32]。 你有解决办法吗?

【问题讨论】:

  • matrix[64][50:82] -- 什么是50:82?那不是 C++。
  • matrix[64][...] 超出范围。展示你使用memcpy的尝试。
  • 所以你想将matrix每一行中索引50..81的元素复制到array对应行的索引0..31处的元素?
  • 是的,我想将矩阵 [64][50:81] 复制到数组 [64][32]。
  • 是的,你是对的。我想将每行矩阵中索引 50..81 中的元素复制到相应数组行的索引 0..31 处的元素。

标签: c++ arrays memcpy


【解决方案1】:
double matrix[64][100];
double array[64][32];

for (int i = 0; i < 64; ++i) {
    memcpy(&array[i][0], &matrix[i][50], sizeof(double) * 32);
}

但是,请考虑改用 std::copy()std::copy_n()。在安全的情况下,他们将在内部使用memcpy()

#include <algorithm>

double matrix[64][100];
double array[64][32];

for (int i = 0; i < 64; ++i) {
    std::copy(&matrix[i][50], &matrix[i][82], &array[i][0]);
    or
    std::copy_n(&matrix[i][50], 32, &array[i][0]);
}

【讨论】:

    猜你喜欢
    • 2011-04-23
    • 2015-06-05
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多