有没有办法将C 中的两个阵列连接并返回它们

Is there a way to concatenate two arrays in c++ and return them?

本文关键字:阵列 两个 连接 返回 有没有      更新时间:2023-10-16

我在python中具有递归功能

def recon(i,j):
    if i == 0 or j == 0:
        return []
    elif x[i-1] == y[j-1]:
        return recon(i-1,j-1) + [x[i-1]]
    elif table[i-1,j] > table[i,j-1]:
        return recon(i-1,j)
    else:
        return recon(i,j-1)

我试图将其重写在C 中,但问题是行

            return recon(i-1,j-1) + [x[i-1]]

我这样做的是C ,但是它会编译,有什么方法可以像Python这样的连接阵列并返回它们。

不带数组。但是您可以使用向量进行此操作。

vector<int> x = ...;
vector<int> y = ...;
x.insert(x.end(), y.begin(), y.end()); // append y to x

您可以通过动态分配的内存进行类似的东西,但是使用向量更容易。

可能是您可以尝试此

for(int j=0;j<10; j++)
    mer[j]=a[j];
for(int i=0; i<10; i++, j++)
    mer[j]=b[i];

其中MER,A和B已经初始化数组变量。

您需要创建一个新的数组,该数组是正确的大小以包含现有数组,然后循环循环以复制它们(不要忘记在目标数组上保留偏移量在第二个复制时)

似乎不必要递归:

vector<int> recon(int i, int j) {
    vector<int> ret;
    while(i > 0 && j > 0)
        if(x[i-1] == y[j-1])
            ret.push_back(x[--i]), --j;
        else if(table[i-1][j] > table[i][j-1])
            --i;
        else
            --j;
    std::reverse(ret.begin(), ret.end());
    return ret;
}

(免责声明:未测试)