std::from_range, std::from_range_t
来自 zh.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(公开成员函数 of std::vector<T,Allocator>)
|
(C++26) |
从范围构造 inplace_vector(公开成员函数 of std::inplace_vector<T,N>)
|
(C++26) |
从范围构造 hive(公开成员函数 of std::hive<T,Allocator>)
|
(C++23) |
从范围构造 deque(公开成员函数 of std::deque<T,Allocator>)
|
(C++23) |
从范围构造 forward_list(公开成员函数 of std::forward_list<T,Allocator>)
|
(C++23) |
从范围构造 list(公开成员函数 of std::list<T,Allocator>)
|
(C++23) |
从范围构造 set(公开成员函数 of std::set<Key,Compare,Allocator>)
|
(C++23) |
从范围构造 map(公开成员函数 of std::map<Key,T,Compare,Allocator>)
|
(C++23) |
从范围构造 multiset(公开成员函数 of std::multiset<Key,Compare,Allocator>)
|
(C++23) |
从范围构造 multimap(公开成员函数 of std::multimap<Key,T,Compare,Allocator>)
|
(C++23) |
从范围构造 unordered_set(公开成员函数 of std::unordered_set<Key,Hash,KeyEqual,Allocator>)
|
(C++23) |
从范围构造 unordered_map(公开成员函数 of std::unordered_map<Key,T,Hash,KeyEqual,Allocator>)
|
(C++23) |
从范围构造 unordered_multiset(公开成员函数 of std::unordered_multiset<Key,Hash,KeyEqual,Allocator>)
|
(C++23) |
从范围构造 unordered_multimap(公开成员函数 of std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>)
|
(C++23) |
从范围构造 priority_queue(公开成员函数 of std::priority_queue<T,Container,Compare>)
|
(C++23) |
从范围构造 queue(公开成员函数 of std::queue<T,Container>)
|
(C++23) |
从范围构造 stack(公开成员函数 of std::stack<T,Container>)
|
(C++23) |
从范围构造 flat_set(公开成员函数 of std::flat_set<Key,Compare,KeyContainer>)
|
(C++23) |
从范围构造 flat_map(公开成员函数 of std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>)
|
(C++23) |
从范围构造 flat_multiset(公开成员函数 of std::flat_multiset<Key,Compare,KeyContainer>)
|
(C++23) |
从范围构造 flat_multimap(公开成员函数 of 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)
|
从输入范围构造新的非视图对象
(函数模板) |