私は実行時までサイズを知っていない配列を持っています。プログラムが開始され、サイズが計算されると、サイズは変更されません。変数をconstに変換します
私は、次のコードをテストした:num_elements
が計算されるので、次のコードは動作しません
#include <iostream>
#include <boost/array.hpp>
#include <cstdint>
int main()
{
uint32_t num_bits = 12;
const uint32_t num_elements = 1 << num_bits;
boost::array<double, num_elements > myArray; //does not work
return 0;
}
を。私は "const_cast"オプションがあることがわかりましたが、私の問題を解決するかどうかはわかりません。
boost :: arrayを使用したいので、私はブーストソリューションがあるかどうかを知りたいと思います。 num_bits
EDITは、私はまた、ファイルからの実行時間の前に未知のこの平均値を読み出したパラメータです。私は、std :: vectorを使用してソリューションを認識していますが、アクセス速度も重要です。これらの要素に頻繁にアクセスし、シミュレーションには約3日かかります...現時点では、私は単純に配列を使用します(新規および削除)
動的サイズの配列をスタックに配置することはできません。あなたは 'array' edit:nvm boost :: arrayはサイズが動的ではありません。 –
PeterT
@PeterT 'alloca'はダイナミックなスタック割り当てですC99スタイルのVLAsもサポートしています – Pubby
' std :: vector'は 'new' /' delete'よりも速くなくても一般的に高速です(ライブラリの実装とコンパイラオプティマイザが一緒に動作してエイリアシングを解消すると高速になることがありますが、これは非常にまれです)。 – MSalters