Namespaces
Variants

std:: from_range, std:: from_range_t

From cppreference.net
Ranges library
Range adaptors
定义于头文件 <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 类型:

容器库
从范围构造 vector
( std::vector<T,Allocator> 的公开成员函数)
从范围构造 inplace_vector
( std::inplace_vector<T,N> 的公开成员函数)
从范围构造 hive
( Template:cpp/container/hive/title 的公开成员函数)
从范围构造 deque
( std::deque<T,Allocator> 的公开成员函数)
从范围构造 forward_list
( std::forward_list<T,Allocator> 的公开成员函数)
从范围构造 list
( std::list<T,Allocator> 的公开成员函数)
从范围构造 set
( std::set<Key,Compare,Allocator> 的公开成员函数)
从范围构造 map
( std::map<Key,T,Compare,Allocator> 的公开成员函数)
从范围构造 multiset
( std::multiset<Key,Compare,Allocator> 的公开成员函数)
从范围构造 multimap
( std::multimap<Key,T,Compare,Allocator> 的公开成员函数)
从范围构造 unordered_set
( std::unordered_set<Key,Hash,KeyEqual,Allocator> 的公开成员函数)
从范围构造 unordered_map
( std::unordered_map<Key,T,Hash,KeyEqual,Allocator> 的公开成员函数)
从范围构造 unordered_multiset
( std::unordered_multiset<Key,Hash,KeyEqual,Allocator> 的公开成员函数)
从范围构造 unordered_multimap
( std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator> 的公开成员函数)
从范围构造 priority_queue
( std::priority_queue<T,Container,Compare> 的公开成员函数)
从范围构造 queue
( std::queue<T,Container> 的公开成员函数)
从范围构造 stack
( std::stack<T,Container> 的公开成员函数)
从范围构造 flat_set
( std::flat_set<Key,Compare,KeyContainer> 的公开成员函数)
从范围构造 flat_map
( std::flat_map<Key,T,Compare,KeyContainer,MappedContainer> 的公开成员函数)
从范围构造 flat_multiset
( std::flat_multiset<Key,Compare,KeyContainer> 的公开成员函数)
从范围构造 flat_multimap
( std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer> 的公开成员函数)
字符串库
从范围构造 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)
从输入范围构造新的非视图对象
(函数模板)