2017-07-14 4 views
-3

私のプログラムで数値の積分と補間をして、結果をstd :: function変数に保存しています。基礎となるモデルが変更されたときにのみ計算を毎回やりたくないので、ファイルに書き込む方法はありますか?または、私はファイルにデータを書き込んで、起動時にそれらをロード/補間する必要がありますか?std :: functionをファイルに保存する

おかげでみんな、 ニクラス

編集:例えば、私はTSpline3オブジェクトとその後、ラムダ関数とそれらを「保存」を使用しています:

class Model 
{ 
    std::function<double(const double)> interpolated_function; 
}; 

// In the code 
std::vector<double> x; std::vector<double> y; Model *model; 
// Calculations 
auto spline = std::make_shared<TSpline3>("name", x.data(), y.data(), x.size()); 
model->interpolated_function = [spline] (const double x) { return spline->Eval(x); } 

を私はROOTでTSpline3オブジェクトを救うことができる知っていますしかし、私はモデルクラスを変更することなく補間の方法を変更することができたいと思います。

+6

*結果はSTD 'で* ::(評価は以下のように「そのしか、この」おそらく必要ないように私には聞こえるが)あなたが持っている場合はコールすることの方法のかを識別関数 '? – Borgleader

+1

***ファイルに書き込む方法はありますか?あなたがコードを投稿しなかったので、あなたには言えませんか? – drescherjm

+2

***私のプログラムで、結果をstd :: function variablesに保存する***これは本当に意味をなさない。最小限の例を投稿してください。 – drescherjm

答えて

1

いいえ、方法はありません。有用にははそのようなラムダを連載しています。すべてのラムダはshared_ptrとメソッド名です。

重要なデータはTSpline3オブジェクトです。それを保存します。あなたが保存している

class Model { 
    shared_ptr<TSpline3> spline; 
    double interpolated_function(double x); 
}; 
double Model::interpolated_function(double x) { spline->Eval(x); }; 
+0

Modelオブジェクトがあれば、保存されたshared_ptrにアクセスする方法はありますか? 計算した直後にデータを保存する必要がありますか? –

+0

ありがとう、私はこれを避けようとしていましたが、実現可能な方法はないと思います –

関連する問題