summaryrefslogtreecommitdiff
path: root/src/utils/cpp/transformed_range.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/cpp/transformed_range.hpp')
-rw-r--r--src/utils/cpp/transformed_range.hpp13
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_;