名稱空間
變體
操作

std::experimental::ranges::advance

來自 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 圖形
 
 
迭代器庫
迭代器概念
間接可呼叫概念
                                                  
                                                  
                                                  
常用演算法要求
                                                  
概念工具
迭代器工具與操作
advance
迭代器特徵
迭代器介面卡
流迭代器
 
定義於標頭檔案 <experimental/ranges/iterator>
namespace {

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

}
(ranges TS)
(定製點物件)
呼叫簽名 (Call signature)
template< Iterator I >
constexpr void advance( I& i, ranges::difference_type_t<I> n );
(1)
template< Iterator I, Sentinel<I> S >
constexpr void advance( I& i, S bound );
(2)
template< Iterator I, Sentinel<I> S >
constexpr ranges::difference_type_t<I> advance( I& i, ranges::difference_type_t<I> n, S bound );
(3)

將迭代器 i 向前移動 n 次,或直到達到 bound,以先發生者為準。

1) 如果 I 模型 RandomAccessIterator,則等效於 i += n。否則,將 i 增加(如果 n 為負則減少)n 次。如果 n 為負且 I 未建模 BidirectionalIterator,則行為未定義。
2) 如果滿足 Assignable<I&, S>,則等效於 i = std::move(bound)
否則,如果 [ibound) 不表示一個範圍,則行為未定義。
否則,如果滿足 SizedSentinel<S, I>,則等效於 ranges::advance(i, bound - i)
否則,增加 i 直到 i == bound
3) 如果滿足 SizedSentinel<S, I>,則如果 |n| >= |bound - i|,則等效於 ranges::advance(i, bound),否則等效於 ranges::advance(i, n)
否則,將 i 增加(如果 n 為負則減少)n 次或直到 i == bound,以先發生者為準。
如果 n > 0,則 [ibound) 應表示一個範圍;如果 n == 0,則 [ibound)[boundi) 應表示一個範圍;如果 n < 0,則 [boundi) 應表示一個範圍,IS 應為相同型別,且 I 必須建模 BidirectionalIterator。否則,行為未定義。

目錄

[編輯] 定製點物件

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

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

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

[編輯] 返回值

1,2) (無)
3) 因達到 bound 而未執行的增/減次數。換句話說,n - M,其中 M 是從 i 的起始位置到結束位置的距離,如果結束位置在起始位置之前,則為負數。

[編輯] 示例

[編輯] 參閱

按給定距離前進迭代器
(函式模板) [編輯]
返回迭代器與哨兵之間,或範圍的起始與結束之間的距離
(函式模板) [編輯]
遞增迭代器
(函式模板) [編輯]
遞減迭代器
(函式模板) [編輯]