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];
}