2012-04-23 7 views
0

私は、次のような定義された構造体を持っている:HDF5:書き込み文字列、構造体、およびベクトル(ああ、私の)

typedef struct { 
    string mName; 
    vector<int> mParts; 
} AGroup; 

私はベクトルで、この構造体のインスタンスを格納しています。私はこれをHDF(v5)ファイルに書き込む必要があります。私は各インスタンスをループして最長のmNameと最長のmPartを見つけ出し、可変ではない長さの新しい配列を作成して情報を保持し、その配列をファイルに書き込むことができたと思います。

これを実行する最善の方法はありますか?いくつかのデータを書くだけでは過度に複雑に思えます。

答えて

1

可変長の配列と文字列がオーバーヘッドを導入します。しかし、彼らはあなたのデータ構造をより正確に反映するので意味をなさないでしょう。可変長のC文字列と可変長の整数配列からなる複合データ型を使うことができます。

文字列とベクトルのサイズがすべて同じ上限に近い場合は、時間と手間を省き、固定長の文字列と配列を使用してください。

すべてはデータセットのサイズによって異なります。ディスク容量の面では、可変長要素のオーバーヘッドと固定サイズ要素の無駄なスペースとの間にトレードオフがあり、試行せずに見積もることは困難です。データセットが小さい場合は、より便利なものを実行します。それが大きい場合は、無駄なスペース、データの意味、プログラミングの容易さなどを避け、この基準に従って最適化することを最も好むものを選択します。

関連する問題