Search code examples
c++multidimensional-arrayprotocol-buffers

protocol buffers - store an double array, 1D, 2D and 3D


How can be an array of double (1D) stored using protocol buffer? What about multi-dimensional (2D or 3D) dense arrays?


Solution

  • An array of double would be best stored via

    repeated double foo = 5 [packed=true];
    

    repeated makes it act as a list, allowing multiple items; packed avoids a header per item.

    There is no direct support for rectangular (or higher) arrays in protobuf. The closest is to store something like:

    repeated innerType foo = 5; // note, can't be "packed"
    
    message innerType {
        repeated double foo = 1 [packed=true];
    }
    

    this is broadly akin to a jagged array, but with an element between each tier.