C++で独自クラスmy_vectorに対する四則演算子を実装しようとしています
いま,加算であればmy_vectorを返り値とするようなoperator+
を実装しています.
(以下の例ではmy_vectorの機能はstd::vectorと同じだと思って下さい).
c++
1my_vector<double> operator+(const my_vector<double>& x, const my_vector<double>& y){ 2 my_vector<double> ret(x.size()); 3 for(size_t i=0; i<x.size(); i++){ 4 ret = x[i] + y[i] 5 } 6 return ret;c 7} 8 9int main(){ 10 size_t N = 100; 11 my_vector<double> x(N, 1.0) 12 my_vector<double> y(N, 2.0); 13 my_vector<double> ans(N); 14 15 N = x + y 16}
このとき,operator+関数内でretという返り値に使うための変数を確保しているため,
プログラム全体としては4つのベクトル(x, y, ans, ret)がアロケートされてしまい,メモリが無駄になっています.
main文はそのままに,operator+関数を改造して,何らかの方法でベクトル3本分だけのメモリ消費で上記を実行する方法はないでしょうか.
よろしくお願い致します.
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。