From 0019be5c97cf4ebb1b906cb548e0a06e0d449f5c Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Tue, 17 Sep 2024 14:52:38 +0200 Subject: Add cast of TransformedRange to std::vector --- src/utils/cpp/transformed_range.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/utils/cpp/transformed_range.hpp') 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 #include #include //std::move +#include #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 { + std::vector result; + result.reserve(size()); + for (auto item : *this) { + result.emplace_back(std::move(item)); + } + return result; + } private: iterator const begin_; -- cgit v1.2.3