【问题标题】:std::copy equivalent in CC 中的 std::copy 等价物
【发布时间】:2020-04-21 18:04:38
【问题描述】:

我有一些 C++ 代码在这些行中使用 std::copy

std::copy(array1, array1 + 4, arrayV + i);
std::copy(array2, array2 + 4, arrayV + i + 4);

在展开循环中。所有数组都是uint8_t*。 如何将这些行转换为 C 中产生相同结果的等效代码?

【问题讨论】:

  • memcpy 符合要求吗?
  • 我尝试在这种情况下使用 memcpy memcpy(array1, array1+4, arrayV+i);但由于 array1 和 array2 是 const uint8_t * 我得到一个错误。此外,我在 arrayV + i 部分也遇到了错误。但是代码在c ++中可以正常工作,但我不知道如何正确地将其适应代码c。 @sergeya
  • 我强烈建议您先阅读some documentation for memcpy,然后再向它提出论据。如果您不知道如何正确使用它,那么很少有东西可以正常工作。

标签: c++ c arrays


【解决方案1】:

你可以使用memcpy:

而不是

std::copy(array2, array2 + 4, arrayV + i + 4);

你会的

memcpy(arrayV + i + 4, array2, sizeof(*array2) * 4);

如果内存块可能重叠,你可以使用memove

【讨论】:

  • 谢谢,在这种情况下:std::copy(array1,array1+4,arrayV+i);正确地做 memcpy(arrayV + i, array1, sizeof(*array1) * 4); ?或不?在这种情况下,正确的方法是什么?
  • std::copy() 可能会被优化以在内部使用memcpy() 来处理琐碎的可复制类型,是的。
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多