summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-17 14:52:38 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-18 16:47:40 +0200
commit0019be5c97cf4ebb1b906cb548e0a06e0d449f5c (patch)
treed197f8d81b1f42b29597b2d0af6810739bc03107
parent62929ab02c7f8e93b3d7241df775acdf2a1e1b36 (diff)
downloadjustbuild-0019be5c97cf4ebb1b906cb548e0a06e0d449f5c.tar.gz
Add cast of TransformedRange to std::vector
-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_;