名稱空間
變體
操作

std::from_range, std::from_range_t

來自 cppreference.com
< cpp‎ | ranges
 
 
範圍庫 (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> 的公共成員函式)
從範圍構造 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}; // uses tagged constructor
    assert(str == "C++");
#endif
}

[編輯] 參閱

原地構造標籤
(tag)[編輯]
表示範圍的元素已排序(不要求唯一性)
(tag)[編輯]
表示範圍的元素已排序且唯一
(tag)[編輯]
從輸入範圍構造新的非檢視物件
(函式模板) [編輯]