は、ベクトル加算を考える:int値をdoubleに追加すると、パフォーマンス上の利点/ペナルティはありますか?
NPNumber NPNumber::plus(const double o) const {
vector<double> c;
for (double a : values)
c.push_back(a + o);
return NPNumber(width, c);
}
NPNumber私は唯一の代わりに別のNPNumberの、単一の整数を追加ダブルス(フィールド値)のベクトルを含ん
、パフォーマンス上の利点またはペナルティこと変換と比較してあります整数と上記の関数を使用して?
すなわち、これは、任意のアーキテクチャ上の速い/遅い:
NPNumber NPNumber::plus(const int i) const {
vector<double> c;
for (double a : values)
c.push_back(a + i);
return NPNumber(width, c);
}
N.B. 'ベクトル c(values.size());' 'values.size()'デフォルトで初期化された要素(値 '0')を持つベクトルを作成し、' push_back'はそれらの後に*追加*要素を追加します。代わりに代わりに 'reserve'を使用したいでしょうか? –
dyp
あなたは正しいです。これは、別の方法のコピー&ペーストエラーのばかげたばかりです。割り当てがここで重要ではないので、私はそれを完全に削除しました。 – choeger