Linear grids use contiguous memory layouts, and thus afford integer indexes. Linear grids are dense grids, meaning they satisfy Beluga named requirements: DenseGrid2 requirements.
A type G satisfies LinearGrid2 requirements if it satisfies Beluga named requirements: DenseGrid2 and given g a possibly const instance of G:
g.data() returns a possibly const reference to an indexable, random access linear data structure containing grid cell data values;i of std::size_t type, g.data_at(i) optionally returns cell data, if cell is included;i of std::size_t type, g.coordinates_at(i) returns embedding space coordinates as an Eigen::Vector2d value;i of std::size_t type, g.neighborhood4(i) computes the cell 4-connected neighborhood as a range of std::size_t indices.