Скопируйте символьный вектор в другой вектор - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать функцию для копирования вектора в другой:

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

Когда я вызываю функцию, в окне подсказки ничего не появляется.

1 Ответ

2 голосов
/ 16 июня 2020

Есть 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;

, что намного удобнее для чтения.

...