将数组中的值复制到另一个不同的大小

时间:2013-08-08 10:55:51

标签: c++ arrays

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

我想将所有值从B [12 ... 20]移动到A [0 ... 8]。我怎样才能准确地改变指数?有公式吗? 所以B [12] - > A [0] B [13] - > A [1]

谢谢。

4 个答案:

答案 0 :(得分:7)

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

std::copy(B+12, B+20, A);

或者,在c ++ 11中,

std::copy(std::next(B,12), std::end(B), std::begin(A));

答案 1 :(得分:6)

你应该在这里使用std::copy,无论数组中的元素类型如何(说明哪种类型,你没有显示该类型 - 问题语法无效),这将正常工作。

std::copy(B + 12, B + 20, A);

答案 2 :(得分:2)

只需写一个循环

int offset = 12;
int lenA = 8;

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

答案 3 :(得分:1)

memcpy(A, B + 12, 8 * sizeof(A[0]));应该可以解决问题。

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