-1

我正在尝试创建一个函数来将一个向量复制到另一个向量中:

#include <iostream>
#include <vector> 

int clone(std::vector <char> X, std::vector <char> Y){
    for(int i(0);i<X.size();i++){
        Y[i]=X[i];
    }
    return 0;
}

当我调用该函数时,提示窗口上没有任何内容。

4

1 回答 1

2

您的代码有 2 个问题。首先是任何修改Y都不会在调用站点可见,因为您传递的vector是值。相反,您需要通过引用传递它。

其次,您的索引X不正确(假设X没有 大Y)。相反,您可以只push_back使用这些值。

但是,您甚至可以vector直接复制 s,因此您可以这样做:

int clone(std::vector <char> const &X, std::vector <char> &Y){
    Y = X;
    return 0;
}

在这一点上,拥有一个命名函数是毫无意义的,因为不是做类似的事情:

std::vector<char> y;
clone(x, y);

你可以简单地做:

auto y = x;

这更具可读性。

于 2020-06-16T16:39:35.473 回答