このクラスを考える:C++初期化子リストのstd ::配列最高のパフォーマンス
template<class value_type, std::size_t row_count, std::size_t column_count>
class matrix
{
public:
matrix()
{
}
matrix(std::array<std::array<value_type, row_count> ,column_count> matrix_data)
: data(matrix_data) {}
void
insert(std::size_t row, std::size_t column, value_type value)
{
data[row][column] = value;
}
value_type
get(std::size_t row, std::size_t column) const
{
return data[row][column];
}
private:
// Initialised to zero
std::array<std::array<value_type, row_count>, column_count> data{};
};
データ配列をゼロに初期化されます。しかし、2番目のコンストラクタ(デフォルト以外のもの)を使用すると、他の値で上書きされます。
最初のコンストラクタが使用されたときに値がゼロに初期化されるように、パフォーマンスを向上させる方法はありますか? forループを推測すると、文よりも効率が悪いですか? 私はそうですか?
おかげ
なぜ、2番目のコンストラクタでゼロが配列を初期化すると思いますか? – NathanOliver
ところで、 'value_type'のコピーを避けるために、const参照によって戻ります。 (セッターと同様に適用)。 – Jarod42
私は、2番目のコンストラクタがstd :: arrayのコピーコンストラクタを使用すると考えましたか?私は、2番目のコンストラクタ0が配列を初期化すると仮定しませんでした。 –