std::ranges::copy
Актуально для C++26.
#include <algorithm>
Актуально на 2025-06-14.
Define overload #1
template<input_iterator I, sentinel_for<I> S, weakly_incrementable O> requires indirectly_copyable<I, O> constexpr ranges::copy_result<I, O> copy(I first, S last, O result);
Копирует элементы из диапазона [first, last] в "result";
Example, possible implementation
Define overload #2
template<input_range R, weakly_incrementable O> requires indirectly_copyable<iterator_t<R>, O> constexpr ranges::copy_result<borrowed_iterator_t<R>, O> copy(R&& r, O result);
Копирует элементы из диапазона "r" в "result";
Example, possible implementation
Возвращаемое значение
Вернёт два итератора, смещенных на количество скопированных элементов.
Notes
- Во избежание возврата из функции итератора ссылающегося на временный объект, будет возвращен объект std::ranges::dangling, если тип "r" не удовлетворяет требования концента ranges::borrowed_range.
Examples
Example 1:
#include <algorithm> #include <iostream> #include <string> #include <vector> namespace ranges = std::ranges; constexpr auto fun(ranges::borrowed_range auto&& copyed, ranges::borrowed_range auto&& result) { return ranges::copy(copyed, std::inserter(result, std::begin(result))); } int main() { std::string copyed = "abcdef 5"; std::vector<char> result {'1', '2', '3'}; copyed.resize(copyed.size()-2); auto [in_, _] = fun(copyed, result); for (auto c : result) std::cout << c; std::cout << std::endl; std::cout << *++in_ << std::endl; }
abcdef 123 5
Changelog
C++20
Введён в стандарт.See also
TODO
This page was last modified on 2025-06-14