【C++】配列の要素を関数内で変更する方法【参照渡し】

スポンサーリンク

【C++】配列の要素を関数内で変更する方法【参照渡し】

C++で定義した配列の要素を、関数を使って変更したい場合の方法をまとめる。

以下のコードのようにただ単に、関数を定義して使っても、配列は関数に代入する前と同じになってしまう。

void ChangeNum(std::vector<int> array){
    array[0] = 0;
}
std::vector<int> numbers = {1, 2, 3, 4}
ChangeNum(numbers); // numbersの1つ目の要素1を0に変える
std::cout << numbers[0] << std::endl;

// 出力
// 1 
// 1のままで0にはならない

&を付けて参照渡しにする

方法としては、関数の定義の引数で、配列のところには&を付けて参照渡しにすれば良い。

今回の場合は、std::vector<int> array → std::vector<int>& arrayにする。

void ChangeNum(std::vector<int>& array){
    array[0] = 0;
}
std::vector<int> numbers = {1, 2, 3, 4}
ChangeNum(numbers); // numbersの1つ目の要素1を0に変える
std::cout << numbers[0] << std::endl;

// 出力
// 0 
// 1から0になった

参考: https://qiita.com/shun-shun123/items/69af670f0332fa424f6e

人気記事

人気記事はこちら。

CUDA、cuDNNのバージョンをターミナルで調べるコマンド
【Pytorch】テンソルの次元を追加・削除する方法【dim】
【Pytorch】テンソルを連結する方法(cat・stack)
【Protobuf】"TypeError: Descriptors cannot not be created directly."を解決する【solved】
【Python】Tensorflowをダウングレード・アップグレードするコマンド
タイトルとURLをコピーしました