Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将值从数组复制到另一个不同的大小_C++_Arrays - Fatal编程技术网

C++ 将值从数组复制到另一个不同的大小

C++ 将值从数组复制到另一个不同的大小,c++,arrays,C++,Arrays,我有一个数组A[8]={0}; 和另一个数组B[20]={0} 我想把所有的值从B[12…20]移到A[0…8]。我怎样才能准确地更改索引?有公式吗? 所以B[12]->A[0] B[13]->A[1] 谢谢。memcpy(A,B+12,8*sizeof(A[0])应该可以做到这一点 假设A和B都是相同的类型。您应该在此处使用,无论数组中的元素类型如何,它都会正常工作(说到这里,您没有显示该类型——问题的语法无效) 使用。它也适用于用户定义的类型: std::copy(B+12, B+20, A

我有一个数组A[8]={0}; 和另一个数组B[20]={0}

我想把所有的值从B[12…20]移到A[0…8]。我怎样才能准确地更改索引?有公式吗? 所以B[12]->A[0] B[13]->A[1]

谢谢。

memcpy(A,B+12,8*sizeof(A[0])应该可以做到这一点

假设A和B都是相同的类型。

您应该在此处使用,无论数组中的元素类型如何,它都会正常工作(说到这里,您没有显示该类型——问题的语法无效)

使用。它也适用于用户定义的类型:

std::copy(B+12, B+20, A);
或者,在c++11中

std::copy(std::next(B,12), std::end(B), std::begin(A));
只需编写一个循环

int offset = 12;
int lenA = 8;

for(int i=0; i < lenA; i++) {
   A[i] = B[i+offset];
}
int offset=12;
int-lenA=8;
对于(int i=0;i
hi@dunc有没有一种方法可以使用for循环来完成它?它不会复制memcpy会复制字节数。如果它是一个整数或其他一些对象字节计数,实际上会建议使用乔恩的代码< >代码:STD::COMPUCTION/COD>回答,因为您使用C++。我实际上想看看如何使用for for for在切换中切换,这将只在数组是基本C兼容类型的情况下工作。使用std::copy,它更安全,它更好地表明了意图(您是在复制元素,而不是内存),并且很可能会编译成一个memcpy,这样做是不安全的。请注意,
B[20]
是不允许的。你的意思可能是
B[12…19]
int offset = 12;
int lenA = 8;

for(int i=0; i < lenA; i++) {
   A[i] = B[i+offset];
}