プロトコルバッファを使用して格納されたdouble(1D)の配列はどのようになりますか? 多次元(2Dまたは3D)密集配列はどうですか?プロトコルバッファ - 1D、2D、3Dのダブル配列を格納
14
A
答えて
20
doubleの配列が最高
repeated double foo = 5 [packed=true];
repeated
を経由して格納されますが、それは複数の項目を許可、リストとして機能します。 packed
は、アイテムごとのヘッダーを回避します。
protobufの長方形(またはそれ以上)の配列は直接サポートされていません。最も近いのは次のようなものを格納することです:
これは概してギザギザの配列に似ていますが、各ティアの間に要素があります。
20
一つは、単にC/C++のメモリレイアウトを模倣し得る:
message DoubleMatrix {
required uint32 rows = 1;
required uint32 cols = 2;
repeated double data = 3 [packed=true];
}
データにアクセスするには、data[i*cols+j]
(行メジャー)、またはdata[i+rows*j]
(列優先)を使用します。 正方行列の場合、rows
/cols
のうちの1つのみを格納する必要があります。技術的には、長方形の場合でも、プロトタイプはデータの長さを知り、他の値を導き出すことができます。
使いやすさのために、おそらく、double MatrixAdapter::get(int row, int col)
経由でアクセスを許可するアダプタクラスを使ってC++でMatrixをラップします。 data_size()==rows()*cols()
を確認することもできます。
関連する問題
- 1. 2D配列を3D配列に格納する
- 2. 2dではなく1dの配列にデータベースからデータを格納する
- 3. 2D配列の列に1D配列を格納するにはどうすればよいですか?
- 4. 3D配列を1D配列に変換
- 5. 2Dダブル配列からバイト配列へ
- 6. 1つのホットエンコーディング - 1dの配列に格納されたデータ
- 7. 2D配列をC++で2Dベクトルに格納する
- 8. 2dダブル配列と1d文字列配列の並べ替えに問題があります。
- 9. 複数の2D行列を配列に格納する
- 10. 2D配列を可変列幅の1D配列にマッピング
- 11. 2dのnumpyの配列で1dのnumpyの配列をブロードキャスト
- 12. 2D配列からオブジェクト1D配列への列のコピー
- 13. ダイナミック2D配列内に文字列リテラルを格納するC
- 14. Cの2D配列に1D配列を代入する
- 15. 1D配列のインデックスを2D配列に変換する
- 16. データをJavaの2D配列にリアルタイムで格納
- 17. 2D numpy配列を1D配列にスライスする
- 18. 1D配列をC++で2D配列としてアクセス
- 19. 1d numpy配列を2d numpy配列に変換する方法
- 20. 1dブール値配列を使用した2d配列
- 21. 1D配列インデックスを2D配列インデックスに変換する
- 22. C#。 1D配列を2D配列に変換する方法
- 23. Javascript 2D配列と1D配列との間
- 24. C++:2D配列対1D配列の違い
- 25. 関数を介して2D配列に値を格納する
- 26. 2D配列から1D列配列と1D行配列を取得する方法は? (C#.NET)
- 27. 2D文字配列をArrayListに格納したい
- 28. 2D配列グリッドからリストに "path"を格納する
- 29. 2Dオブジェクト配列の列を1D文字列配列としてキャスト
- 30. ABRecordRefの配列を格納
[ProtoBuf-Netを使用すると、多次元配列をどのように直列化するのですか?](http://stackoverflow.com/questions/4090173/using-protobuf-net-how-to-deserialize- a-multi-dimensional-array) –
b1nary.atr0phy、この質問には1D配列の解決策があります。 C/C++についてのこの質問は、.NETに関するものではありません。質問を重複して登録すると、回答がマージされますか? – osgx