gpt4 book ai didi

c++ - 使用 memcpy 复制数组的一部分,以及其他内存操作工具

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:59 25 4
gpt4 key购买 nike

是否可以使用 memcpy 复制数组的一部分?

例如,我们有一个包含 10 个整数的数组。我们可以创建一个新数组,并将最后 5 个整数复制到其中吗?

是否有其他可用于 c/c++ 的内存/数组复制/操作工具?

最佳答案

Is it possible to use memcpy to copy part of an array?

不,一般情况下是不可能的。只有当数组中元素的类型是 普通 布局时,您才能这样做。

Say for example we have an array of 10 integers. Can we create a new array, and copy the last 5 integers into it?

int普通 类型,因此对于特定情况它会起作用:

int source[10] = { ::: };
int target[5];

std::memcpy( target, source + 5, 5 * sizeof(int) );

Are there other memory/array copying/manipulation tools which are available for use with c/c++?

当然,C++ 标准库 中的整套算法都适用于数组。您使用指向数组中第一个和最后一个元素的指针作为 begin/end 迭代器。或者,如果您使用的是 C++11,则只需 std::begin|end( array )

std::copy( source + 5, source + 10, target + 0 );

std::copy( std::begin(source) + 5, std::end(source), std::begin(target) );

这是一个元函数,您可以使用它来检查类型是否普通,以及此类概念的定义:http://en.cppreference.com/w/cpp/types/is_trivial

关于c++ - 使用 memcpy 复制数组的一部分,以及其他内存操作工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14757256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com