私は現在、大規模な数値計算を行っています。変数(double型)を使用する場合は、速度が最も重要です。次のことを行うためのより読みやすい方法があるかどうか、または構造体またはブーストライブラリを使用するより良い方法があるかどうかを知りたい。
更新:いくつかの後で、多くの変数による私の最初の目的は、変数を参照/ポインターではなくオブジェクトとして維持しながら、変数をある種のコンテナーに間接的に編成することです。
1)変数に対して大規模で時間のかかる計算を行います。変数は、使用されている順序で宣言され、プログラム全体で変更されます。
2)コードを編集することにしたときはいつでも変数をプログラムに追加できます(かなり頻繁に)
3)変数を(ポインターのコンテナーなどに)整理することは、これらのオブジェクトをまとめて操作しやすくするために重要です。たとえば、しばらくしてこれらすべてのオブジェクトをファイルに書き込むと、コードがはるかに合理化され、効率的になります。
代わりに、型を作成し(すべての変数オブジェクトはdouble型です)、ポインターのベクトルに自動的に追加するクラスを作成することを考えていました-副次的な質問として、これはやり過ぎでしょうか
私はそのようなあらゆる種類の計算を行う多くの変数を持っています(これには時間がかかります):
double varName1 = someValue;
double varName2 = someValue;
double varName3 = someValue;
...
double varNameN = someValue;
...
SOME_COMPUTATION HERE
これは、各変数を読みやすくするための最も明白な方法だと思います。将来可能な出力のためにコレクションを保存するために、すべてをコンテナーに入れ、次のように各要素への参照変数を作成しました。
std::vector<double> store;
...
ADD VALUES TO VECTOR
...
double& varName1 = store[0];
double& varName2 = store[1];
...
ただし、上記の方法を実行すると、参照(&)変数を使用した計算はよりコストがかかります(時間外)。次に、反対のことを行うことにしました。たとえば、すべてのファイルをファイルに書き込む必要がある場合は、変数の代わりにポインターのベクトルを格納します。たとえば、このベクトルを使用して、通常どおりに変数の計算を実行します(参照ではありません)。これを行うために、私は次の(醜い)方法を思いついた
std::vector<double*> store;
double create_v(double init, double& d)
{
store.push_back(&d);
d = init;
}
double varName1 = create_v(0.05,varName1);
1)同じことを行う読みやすさのためのテンプレート/ブーストを使用したこれのより良い実装があるか、または2)私のようなC ++初心者が知っておくべき別の方法がありますか?3)上記のオーバーヘッドを最小限に抑えることを考慮していない最適化(-O2と-O3でテストし、g ++ 4.7.2を使用します)