2016-06-30 6 views
2

私はC++の初心者です。たとえば、f(x)=x*xのような関数を出力するC++プログラムがあり、それを評価して印刷する必要があるとします。これはコード内で簡単に行うことができます。C++、Gnuplot:RAMに一時ファイルを作成し、Gnuplotで使用する

評価結果がRAMに一時的なファイルを作成することはできますか?のように、それはstd::vectorである可能性が高いので、ヒープに存在します(いいえ?)。

system()(またはコード内の何か)を使用して、メモリからファイルを呼び出すことはできますか?

最後に、これらの2つは外付けの仮想RAMディスクなしで行うことができますか?

+0

外付けの仮想RAMディスクなしで説明したことをすることはできません – GMichael

+0

オンザフライでRAMディスクを作成することができない限り、それはできません。しかし、POSIXシステム上の '/ tmp'のように、すでにマウントされている通常のディスクやファイルシステムで一時ファイルを使用するとどうなりますか? GNUplotファイルは通常比較的小さく、そのようなファイルを書くことはボトルネックにはなりません。また、SSDが一般的な場合は、書き込みがさらに高速になり、大量のメモリがある場合は、一時ディレクトリはすでにRAMディスクになっている可能性があります。 –

+0

@GMichaelそれでは、唯一の方法は仮想RAMディスクを作成することですが、最初の2つは可能ですか? –

答えて

1

だから、Linuxでは、パイプを使用して、あなたは、最初の例として、次のことを行うことができます:data.txtを、2つの列のファイルである

cat data.txt | gnuplot -p -e "plot '-' w l" 

。代わりに、あなたはあなたのプログラムがいくつかのデータを生成することができ、あなたはそれが少しより複雑にするgnuplotのための余分な設定を追加することができ、そのファイルの:

./program | gnuplot -p -e "set ylabel 'E'; plot '-' w l" 

これは、あなたが必要とするすべてです。 -p = persistent、-e =対話型(?)とコマンド間のセミコロン(;)が必要であることに注意してください。 Windowsでも同様のことが起こるかもしれません。私はこれを願っています。

余分なもの:あなたは多くの設定を持っている場合は、ファイルにそれらを置くことができ、例:

$ cat settings.txt 
set logs; 
set ylabel "hejsan"; 
set xlabel "energy"; 
plot '-' w l 

、その後:

./program | gnuplot -p -e "$(<settings.txt)" 

いけない"$(<filename)"のいずれかの記号を欠場!これはLinuxのBashシェルにしか当てはまりません。 cygwin環境を試すことができます。あるいはubuntuをインストールするだけです。あなたのSSDを保存するために、これを行うにしたい場合は一週間後

EDITは、もちろんそれは傷つける、おそらく問題ではありません文句を言いません。 SSDにはインテリジェントな管理機能があるため、毎回同じ物理セグメントに書き込む必要はありません。ファイルは "移動"し、数百テラバイトのサイクリングに耐えられるように構築されています。

+0

答えてくれてありがとう、私はarchlinux x64を持っていますが、これもWindowsでも試してみますが、今はありません。確かに有効なオプションのように見えます。これを答えとしてマークします。 –

+0

良いです、それはArchで動作するはずです。受け入れてくれてありがとう、私はそれが私の最初だと思う! –

関連する問題