#include<iostream>
#include <fstream>
#include <algorithm>
#include<vector>
using namespace std;
int main()
{
int P[ ]={3,7,6,5,2,4,1,8};
int N[ ]={8,6,7,2,5,3,4,1};
int r= (sizeof(P)/sizeof(*P)) ;
int s= (sizeof(N)/sizeof(*N));
int val=r/2 ;
int t1[val],t2[val],t3[val],t4[val],n=0,p=0;
for(int m=0;m< val;m++)
{
t1[n]=P[m];
t2[n]=N[m];
n++;
}
for(int x=val;x< r;x++)
{
t3[p]=P[x];
t4[p]=N[x];
n++;
}
int* child=new int [val+val];
copy(t1,t1+val,child);
copy(t3,t3+val,child+val);
cout << child;
}
return 0;
}
答案 0 :(得分:0)
这部分错了:
int t1[val], t2[val], t3[val], t4[val]
您只能使用常量值来声明数组的大小。
您可以使用std::vector
或为t
- 数组动态分配内存。
std::vector<int> t1(val);
std::vector<int> t2(val);
for(int m = 0; m < val; m++)
{
t1[n] = P[m];
t2[n] = N[m];
n++;
}
答案 1 :(得分:0)
您的代码中似乎存在多个错误。
C ++目前不支持可变长度数组。
int val = r / 2; int t1 [val]; //不行
在第二个for循环中,我猜你的意思是p ++而不是n ++;
您应该使用std::vectors
cout&lt;&lt;儿童; //这会输出指针的地址,而不是整个数组。