名稱空間
變體
操作

std::ranges::views::to_input, std::ranges::to_input_view

來自 cppreference.com
< cpp‎ | ranges
 
 
範圍庫 (Ranges library)
範圍介面卡 (Range adaptors)
 
 
定義於標頭檔案 <ranges>
template< ranges::input_range V >

    requires ranges::view<V>
class to_input_view

    : public ranges::view_interface<to_input_view<V>>
(1) (C++26 起)
namespace views {

    inline constexpr /* unspecified */ to_input = /* unspecified */;

}
(2) (C++26 起)
呼叫簽名 (Call signature)
template< ranges::viewable_range R >

    requires /* 見下文 */

constexpr ranges::view auto to_input( R&& r );
(C++26 起)
1) 一個範圍介面卡,它將底層 view 表示為僅 input_range,而不是 common_range
2) 範圍介面卡物件 (RangeAdaptorObject)。令 e 為子表示式,令 Tdecltype(e)。那麼表示式 views::to_input(e) 在以下所有條件為真且表示式格式正確時,與

因此,to_input_view 從不滿足比 input_range 更強的範圍概念。特別是,它不滿足以下所有概念:

此外,to_input_view 不滿足 common_range。然而,當底層檢視 V 滿足相應概念時,它滿足 borrowed_rangeconstant_rangesized_range

目錄

[編輯] 資料成員

成員 描述
V base_ (私有) 底層檢視
(僅用於闡釋的成員物件*)

[編輯] 成員函式

構造一個 to_input_view
(公開成員函式)
返回底層(適配)檢視的副本
(公開成員函式)
返回指向起始的迭代器
(公開成員函式)
返回一個迭代器或一個哨兵到末尾
(公開成員函式)
返回元素數量。僅當底層(被適配的)範圍滿足 sized_range 時提供。
(公開成員函式)
繼承自 std::ranges::view_interface
返回派生檢視是否為空,僅當它滿足 sized_rangeforward_range 時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
(C++23)
返回範圍開頭的常量迭代器
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
(C++23)
返回範圍常量迭代器的哨兵
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視是否非空,僅當 ranges::empty 適用於它時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
獲取派生檢視資料地址,僅當其迭代器型別滿足 contiguous_iterator 時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視中的第一個元素,如果它滿足 forward_range 則提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視中的最後一個元素,僅當它滿足 bidirectional_rangecommon_range 時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視中的第 n 個元素,僅當它滿足 random_access_range 時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]

std::ranges::to_input_view::to_input_view

to_input_view() requires std::default_initializable<V> = default;
(1) (C++26 起)
constexpr explicit to_input_view( V base );
(2) (C++26 起)
1) 透過其預設成員初始化器 (= V()) 對 base_ 進行值初始化。
2)std::move(base) 初始化 base_

引數

base - 一個檢視

std::ranges::to_input_view::base

constexpr V base() const& requires std::copy_constructible<V>;
(1) (C++26 起)
constexpr V base() &&;
(2) (C++26 起)
1) 從底層檢視複製構造結果。等價於 return base_;
2) 從底層檢視移動構造結果。等價於 return std::move(base_);

std::ranges::to_input_view::begin

constexpr auto begin() requires (!__simple_view<V>);
(1) (C++26 起)
constexpr auto begin() const requires ranges::range<const V>;
(2) (C++26 起)
1) 等價於 return /*iterator*/<false>(ranges::begin(base_));
2) 等價於 return /*iterator*/<true>(ranges::begin(base_));

std::ranges::to_input_view::end

constexpr auto end() requires (!__simple_view<V>);
(1) (C++26 起)
constexpr auto end() const requires ranges::range<const V>;
(2) (C++26 起)
1,2) 等價於 return ranges::end(base_);

std::ranges::to_input_view::size

constexpr auto size() requires ranges::sized_range<V>;
(1) (C++26 起)
constexpr auto size() const requires ranges::sized_range<const V>;
(2) (C++26 起)
1,2) 等價於 return ranges::size(base_);

[編輯] 推導指引

template< class R >
to_input_view( R&& ) -> to_input_view<views::all_t<R>>;
(C++26 起)

[編輯] 巢狀類

迭代器型別
(僅用於說明的成員類模板*)

[編輯] 輔助模板

template< class T >

constexpr bool enable_borrowed_range<std::ranges::to_input_view<T>> =

    ranges::enable_borrowed_range<T>;
(C++26 起)

std::ranges::enable_borrowed_range 的特化使得當底層檢視滿足 borrowed_range 時,to_input_view 也滿足它。

[編輯] 注意

to_input_view 可用於避免為支援更強迭代器強度所需操作而產生的開銷。

特性測試 標準 特性
__cpp_lib_ranges_to_input 202502L (C++26) std::ranges::to_input_view

[編輯] 示例

[編輯] 參閱

指定其迭代器型別滿足 input_iterator 的範圍
(概念) [編輯]
view 轉換為 common_range
(類模板) (範圍介面卡物件)[編輯]