diff options
Diffstat (limited to 'src/utils/cpp/transformed_range.hpp')
-rw-r--r-- | src/utils/cpp/transformed_range.hpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/utils/cpp/transformed_range.hpp b/src/utils/cpp/transformed_range.hpp index 0522313d..f28029f3 100644 --- a/src/utils/cpp/transformed_range.hpp +++ b/src/utils/cpp/transformed_range.hpp @@ -20,6 +20,7 @@ #include <iterator> #include <type_traits> #include <utility> //std::move +#include <vector> #include "gsl/gsl" @@ -86,6 +87,18 @@ class TransformedRange final { [[nodiscard]] auto begin() const noexcept -> iterator { return begin_; } [[nodiscard]] auto end() const noexcept -> iterator { return end_; } + [[nodiscard]] auto size() const -> typename iterator::difference_type { + return std::distance(begin_, end_); + } + + [[nodiscard]] auto ToVector() const -> std::vector<Result> { + std::vector<Result> result; + result.reserve(size()); + for (auto item : *this) { + result.emplace_back(std::move(item)); + } + return result; + } private: iterator const begin_; |