// // Created by m on 12/11/21. // #ifndef RLA_IIPP_GRID2D_HPP #define RLA_IIPP_GRID2D_HPP #include #include template class Grid2D { private: std::vector> grid{}; public: Grid2D(int width, int height) { grid = std::vector>(height, std::vector(width)); } int get_width() { return grid[0].size(); } int get_height() { return grid.size(); } void insert(int x, int y, T arg) { grid[y][x] = arg; } T get(int x, int y) { return grid[y][x]; } ranges::any_view get_range() { int height = get_height(); int width = get_width(); return ranges::views::iota(0, height) | ranges::views::transform([height, width](int y) { return ranges::views::iota(0, width) | ranges::views::transform([y](int x) { return Point{x,y}; }); }) | ranges::views::join; } }; #endif //RLA_IIPP_GRID2D_HPP