std:: from_range, std:: from_range_t
From cppreference.net
|
Определено в заголовочном файле
<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++26)
|
создаёт
inplace_vector
из диапазона
(публичная функция-член
std::inplace_vector<T,N>
)
|
|
(C++26)
|
конструирует
hive
из диапазона
(публичная функция-член
Template:cpp/container/hive/title
)
|
|
(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>
)
|
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__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}; // использует конструктор с тегом assert(str == "C++"); #endif }
Смотрите также
|
тег для конструирования на месте
(тег) |
|
|
указывает, что элементы диапазона отсортированы (уникальность не требуется)
(тег) |
|
|
(C++23)
|
указывает, что элементы диапазона отсортированы и уникальны
(тег) |
|
(C++23)
|
создаёт новый объект (не представление) из входного диапазона
(шаблон функции) |