Spec-Zone.ru › C++

std::from_range, std::from_range_t

Определено в заголовке <ranges>
struct from_range_t { explicit from_range_t() = default; };
(с C++23)
inline constexpr std::from_range_t from_range {};
(с C++23)

std::from_range — это тег разбора, который можно передать в конструкторы соответствующих контейнеров, чтобы указать, что элемент контейнера создаётся из диапазона.

Соответствующий тип std::from_range_t можно использовать в списке параметров конструктора, чтобы сопоставить нужный тег.

Стандартная библиотека

Следующие типы стандартной библиотеки используют тип std::from_range_t в своих конструкторах:

Библиотека контейнеров
(конструктор)
(C++23)
создаёт vector из диапазона
(публичный член-функция std::vector<T,Allocator>)
(конструктор)
(C++23)
создаёт deque из диапазона
(публичный член-функция std::deque<T,Allocator>)
(конструктор)
(C++23)
создаёт forward_list из диапазона
(публичный член-функция std::forward_list<T,Allocator>)
(конструктор)
(C++23)
создаёт list из диапазона
(публичный член-функция std::list<T,Allocator>)
(конструктор)
(C++23)
создаёт set из диапазона
(публичный член-функция std::set<Key,Compare,Allocator>)
(конструктор)
(C++23)
создаёт map из диапазона
(публичный член-функция std::map<Key,T,Compare,Allocator>)
(конструктор)
(C++23)
создаёт multiset из диапазона
(публичный член-функция std::multiset<Key,Compare,Allocator>)
(конструктор)
(C++23)
создаёт multimap из диапазона
(публичный член-функция std::multimap<Key,T,Compare,Allocator>)
(конструктор)
(C++23)
создаёт unordered_set из диапазона
(публичный член-функция std::unordered_set<Key,Hash,KeyEqual,Allocator>)
(конструктор)
(C++23)
создаёт unordered_map из диапазона
(публичный член-функция std::unordered_map<Key,T,Hash,KeyEqual,Allocator>)
(конструктор)
(C++23)
создаёт unordered_multiset из диапазона
(публичный член-функция std::unordered_multiset<Key,Hash,KeyEqual,Allocator>)
(конструктор)
(C++23)
создаёт unordered_multimap из диапазона
(публичный член-функция std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>)
(конструктор)
(C++23)
создаёт priority_queue из диапазона
(публичный член-функция std::priority_queue<T,Container,Compare>)
(конструктор)
(C++23)
создаёт queue из диапазона
(публичный член-функция std::queue<T,Container>)
(конструктор)
(C++23)
создаёт stack из диапазона
(публичный член-функция std::stack<T,Container>)
(конструктор)
(C++23)
создаёт flat_set из диапазона
(публичный член-функция std::flat_set<Key,Compare,KeyContainer>)
(конструктор)
(C++23)
создаёт flat_map из диапазона
(публичный член-функция std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>)
(конструктор)
(C++23)
создаёт flat_multiset из диапазона
(публичный член-функция std::flat_multiset<Key,Compare,KeyContainer>)
(конструктор)
(C++23)
создаёт flat_multimap из диапазона
(публичный член-функция std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>)
Библиотека строк
(конструктор)
(C++23)
создаёт basic_string из диапазона
(публичный член-функция std::basic_string<CharT,Traits,Allocator>)

Примечания

Макрос проверки наличия функции Значение Std Функция
__cpp_lib_containers_ranges 202202L (C++23) Конструкторы с тегами для создания из диапазона, совместимого с контейнером

Пример

#include <cassert>
#include <string>
 
int main()
{
#ifdef __cpp_lib_containers_ranges
    auto const range = {0x43, 43, 43};
    std::string str{std::from_range, range}; // uses tagged constructor
    assert(str == "C++");
#endif
}

См. также

ranges::to
(C++23)
создаёт новый объект, не являющийся представлением, из входного диапазона
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/from_range

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API