From d76ae09ab85821361cc4ef0f2f1de0a6a16c8237 Mon Sep 17 00:00:00 2001 From: Nathan Hughes Date: Sat, 29 Mar 2025 14:57:11 +0000 Subject: [PATCH] use typedefs instead of inheriting from iterator --- include/spatial_hash/layer.h | 21 ++++++++++++++------- include/spatial_hash/voxel_layer.h | 24 ++++++++++++++---------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/include/spatial_hash/layer.h b/include/spatial_hash/layer.h index 1f8198a..2208fc1 100644 --- a/include/spatial_hash/layer.h +++ b/include/spatial_hash/layer.h @@ -34,7 +34,9 @@ * -------------------------------------------------------------------------- */ #pragma once +#include #include +#include #include #include #include @@ -204,10 +206,14 @@ class Layer { public: // Iterators. - class iterator - : public std::iterator { + class iterator { public: using MapIt = typename BlockMap::iterator; + using iterator_category = std::forward_iterator_tag; + using difference_type = std::ptrdiff_t; + using value_type = BlockT; + using pointer = BlockT*; + using reference = Block&; explicit iterator(MapIt it) : it_(it) {} iterator& operator++() { @@ -228,13 +234,14 @@ class Layer { MapIt it_; }; - class const_iterator : public std::iterator { + class const_iterator { public: using MapIt = typename BlockMap::const_iterator; + using iterator_category = std::forward_iterator_tag; + using difference_type = std::ptrdiff_t; + using value_type = const BlockT; + using pointer = const BlockT*; + using reference = const Block&; explicit const_iterator(MapIt it) : it_(it) {} const_iterator& operator++() { diff --git a/include/spatial_hash/voxel_layer.h b/include/spatial_hash/voxel_layer.h index bb752d0..a00cdfc 100644 --- a/include/spatial_hash/voxel_layer.h +++ b/include/spatial_hash/voxel_layer.h @@ -276,12 +276,14 @@ class VoxelLayer : protected Grid, public BlockLayer { : blocks_(blocks), num_voxels_(num_voxels) {} virtual ~VoxelIterable() = default; - class iterator : public std::iterator { + class iterator { public: + using iterator_category = std::forward_iterator_tag; + using difference_type = std::ptrdiff_t; + using value_type = VoxelType; + using pointer = VoxelType*; + using reference = VoxelType&; + iterator(MapIt map_it, MapIt map_end, size_t voxel_idx, size_t num_voxels) : map_it_(map_it), map_end_(map_end), voxel_idx_(voxel_idx), num_voxels_(num_voxels) {} @@ -315,12 +317,14 @@ class VoxelLayer : protected Grid, public BlockLayer { const size_t num_voxels_; }; - class const_iterator : public std::iterator { + class const_iterator { public: + using iterator_category = std::forward_iterator_tag; + using difference_type = std::ptrdiff_t; + using value_type = const VoxelType; + using pointer = const VoxelType*; + using reference = const VoxelType&; + const_iterator(MapIt map_it, MapIt map_end, size_t voxel_idx, size_t num_voxels) : map_it_(map_it), map_end_(map_end), voxel_idx_(voxel_idx), num_voxels_(num_voxels) {}