名稱空間
變體
操作

std::experimental::ranges::distance

來自 cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
實驗性
技術規範
檔案系統庫 (檔案系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行性擴充套件 (並行性 TS)
並行性擴充套件 2 (並行性 TS v2)
併發性擴充套件 (併發性 TS)
併發擴充套件 2 (併發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函式 (特殊函式 TR)
實驗性非 TS
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
迭代器庫
迭代器概念
間接可呼叫概念
                                                  
                                                  
                                                  
常用演算法要求
                                                  
概念工具
迭代器工具與操作
distance
迭代器特徵
迭代器介面卡
流迭代器
 
定義於標頭檔案 <experimental/ranges/iterator>
namespace {

    constexpr /* 未指定 */ distance = /* 未指定 */;

}
(ranges TS)
(定製點物件)
呼叫簽名 (Call signature)
template< Iterator I, Sentinel<I> S >
constexpr ranges::difference_type_t<I> distance( I first, S last );
(1)
template< Range R >
constexpr ranges::difference_type_t<ranges::iterator_t<R>> distance( R&& r );
(2)
template< SizedRange R >
constexpr ranges::difference_type_t<ranges::iterator_t<R>> distance( R&& r );
(3)

返回 firstlast 之間,或範圍 r 的起始和結束之間的距離。

1) 如果滿足 SizedSentinel<S, I>,則等價於 return last - first;。否則,返回從 firstlast 所需的增量次數。如果 [firstlast) 不表示一個範圍,則 IS 必須是相同的型別,並且必須模型化 SizedSentinel,並且 [lastfirst) 必須表示一個範圍。否則,行為未定義。
2) 等價於 return ranges::distance(ranges::begin(r), ranges::end(r));
3) 等價於 return ranges::size(r);

如果標頭檔案 <experimental/ranges/range> 在例項化點之前未被包含,則例項化過載 (2,3) 可能會格式錯誤。

目錄

[編輯] 定製點物件

名稱 ranges::distance 表示一個定製點物件,它是 函式物件,屬於 字面量 Semiregular 類型別(為解釋目的,記為 DistanceT)。DistanceT 的所有例項都相等。因此,ranges::distance 可以自由複製,並且其副本可以互換使用。

給定一組型別 Args...,如果 std::declval<Args>()... 滿足上述 ranges::distance 的引數要求,則 DistanceT 將滿足 ranges::Invocable<const DistanceT, Args...>。否則,DistanceT 的函式呼叫運算子不參與過載決議。

在定義 ranges::distance 的每個翻譯單元中,它引用定製點物件的同一個例項。(這意味著它可以在諸如行內函數和函式模板中自由使用,而不會違反單一定義規則。)

[編輯] 返回值

firstlast 之間,或範圍 r 的起始和結束之間的距離。

[編輯] 示例

[編輯] 參閱

返回兩個迭代器間的距離
(函式模板) [編輯]
按給定距離前進迭代器
(函式模板) [編輯]
遞增迭代器
(函式模板) [編輯]
遞減迭代器
(函式模板) [編輯]
獲取在常數時間內可計算大小的範圍的大小
(定製點物件)[編輯]