Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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,请看一下下面的代码 #include <iostream> using namespace std; int main() { int array1[10] = {1,1,1,1,1,1,1,1,1,1}; int array2[10] = {2,2,2,2,2,2,2,2,2,2}; int array3[20]; for(int i=0;i<=9;i++) { array3[i] = array1[i];

请看一下下面的代码

#include <iostream>

using namespace std;

int main()
{
    int array1[10] = {1,1,1,1,1,1,1,1,1,1};
    int array2[10] = {2,2,2,2,2,2,2,2,2,2};

    int array3[20];

    for(int i=0;i<=9;i++)
    {
        array3[i] = array1[i];
        array3[i+1] = array2[i];
    }

    for(int i=0;i<20;i++)
    {
        cout << array3[i] << endl;
    }
}

但我所做的尝试并没有完全奏效。请帮助。

您需要在逻辑中使用
array3[i*2]=
array3[i*2+1]=
,因为您一次添加2个值

但除此之外,它还有
算法

#include <algorithm>

int array1[10] = {1,1,1,1,1,1,1,1,1,1};
int array2[10] = {2,2,2,2,2,2,2,2,2,2};
std::copy(array2, array2 + sizeof10 array1);
#包括
int array1[10]={1,1,1,1,1,1,1,1,1};
int-array2[10]={2,2,2,2,2,2,2,2};
标准::复制(阵列2,阵列2+sizeof10阵列1);

这将只分配给元素10。我想你会想要如下的东西:

for(int i=0;i<=9;i++)
{
    array3[i*2] = array1[i];
    array3[i*2+1] = array2[i];
}
for(inti=0;i试试这个

for(int i=0;i<=9;i++)
{
array3[i*2] = array1[i];
array3[i*2+1] = array2[i];
}

for(int i=0;i您的赋值循环应该是

int k = 0;
for(int i=0;i<=9;i++)
    {
        array3[k++] = array1[i];
        array3[k++] = array2[i];
    }
intk=0;

对于(inti=0;非常整洁,但效率较低…而且您应该能够以整洁的方式处理头脑中的“*2”:)谢谢!!+1:)@这是处理器必须处理的另一个变量。我永远不会对数组指示符使用后增量。它是未定义的。他要求存储来自array1和array2的所有元素。因此,不可用,但array1和array2只有10个元素。array1[11]到array1[19]将无效。如果堆栈array2[11]上的变量之间没有填充,则可能确实是array1[0]@Roger Zhu您不能以这种方式编辑答案,只能修改拼写、格式等,但不能以您想要的方式更改答案。(很抱歉在评论中发布,但我不知道在何处发布)如果您对答案有不同的意见,请在评论中说出来或添加自己的答案,但是已经有了正确的答案。太好了..谢谢:)+1来自我:)或
i+=2
而不是
i++
@ColeJohnson-请参阅我对其他问题的评论,以了解为什么这不起作用。您必须有一个单独的变量来保存array3的索引,否则将超出array1/2或不填充array3。这最准确地描述了它的含义,而且非常有效(乘以小常数非常快)。哦,对了。忘了我也像这样被用作源数组的指示符,因为它清楚地显示了每个数组1/2中的I和数组3中的I之间的关系。我想是个人喜好吧……谢谢你的回复+我发了一封信:)
int k = 0;
for(int i=0;i<=9;i++)
    {
        array3[k++] = array1[i];
        array3[k++] = array2[i];
    }