两个不同数组的数组连接

时间:2014-02-28 07:14:22

标签: c++ arrays

我正在做简单的遗传算法统一交叉操作。因为我使用两个数组作为父和母。我想连接孩子以获得后代(孩子)。 我有添加数组的问题。任何帮助plssss.i做了ubuntu

#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;

}

2 个答案:

答案 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)

您的代码中似乎存在多个错误。

  1. C ++目前不支持可变长度数组。

    int val = r / 2; int t1 [val]; //不行

  2. 在第二个for循环中,我猜你的意思是p ++而不是n ++;

  3. 您应该使用std::vectors

  4. 而不是手动执行所有内存分配 - 解除分配
  5. cout&lt;&lt;儿童; //这会输出指针的地址,而不是整个数组。