HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
ranges.hpp
1// Copyright Take Vos 2020-2021.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include <ranges>
8#include <algorithm>
9#include <concepts>
10#include <string>
11#include <string_view>
12#include <type_traits>
13#include <vector>
14
15namespace hi::inline v1 {
16
20template<typename View>
21[[nodiscard]] std::vector<typename View::value_type> make_vector(View const &view)
22{
24 auto first = begin(view);
25 auto last = end(view);
26 r.reserve(std::distance(first, last));
27 std::copy(first, last, std::back_inserter(r));
28 return r;
29}
30
34template<std::ranges::sized_range View>
35[[nodiscard]] std::vector<typename View::value_type> make_vector(View &&view) noexcept
36{
38 auto first = begin(view);
39 auto last = end(view);
40 r.reserve(std::distance(first, last));
41 std::ranges::copy(first, last, std::back_inserter(r));
42 return r;
43}
44
48template<typename View>
49[[nodiscard]] auto make_vector(View &&view)
50{
51 using std::begin;
52 using std::end;
53
55 for (auto it = begin(view); it != end(view); ++it) {
56 r.push_back(*it);
57 }
58 //auto first = begin(view);
59 //auto last = end(view);
60 //std::ranges::copy(first, last, std::back_inserter(r));
61 return r;
62}
63
64} // namespace hi::inline v1
T back_inserter(T... args)
T begin(T... args)
T copy(T... args)
T distance(T... args)
T end(T... args)
T push_back(T... args)