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
迭代器特徵
迭代器適配器
流迭代器
 
namespace {

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

}
(範圍 TS)
(定製點對象)
調用簽名
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)

n 次推進迭代器 i,或直至抵達 bound,先到為止。

1)I 實現 RandomAccessIterator,則等價於 i += n。否則自增(或若 n 為負則自減)i {{|n}} 次。若 n 為負且 I 不滿足 BidirectionalIterator 則行為未定義。
2) 若滿足 Assignable<I&, S>,則等價於 {{{1}}}
否則,若 [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)
否則自增(或若 n 為負則自減)i n 次或直至 i == bound,先到為止。
n > 0,則 [ibound) 應當代表一個範圍;若 n == 0,則 [ibound)[boundi) 應當代表一個範圍;若 n < 0,則 [boundi) 應當代表一個範圍,且 IS 應當是同一類型,且 I 必須滿足 BidirectionalIterator。否則,行為未定義。

目錄

[編輯] 定製點對象

名稱 ranges::advance 代表一個定製點對象,它是字面 Semiregular 類類型的cpp/named req/FunctionObject(為說明目的以 AdvanceT 表示)。AdvanceT 的所有實例均相等。從而能自由地複製 ranges::advance,且能交替使用其副本。

給定類型集合 Args...,若 std::declval<Args>()... 滿足上面針對 ranges::advance 實參的要求,則 AdvanceT 將滿足 ranges::Invocable<const AdvanceT, Args...>。否則,沒有 AdvanceT 的函數調用運算符參與重載決議。

在每個定義 ranges::advance 的翻譯單元中,它都指代定製點對象的同一實例。(這表示能自由地在類似 inline 函數和函數模板的東西中使用它,而不違反單一定義規則。)

[編輯] 返回值

1,2) (無)
3) 由於抵達 bound 而不進行的自增/自減次數。換言之為 n - M,其中 M 是從 i 的開始位置到結束位置的距離,而若結束位置在開始位置之前則為負。

[編輯] 示例

[編輯] 參閱

令迭代器前進給定的距離
(函數模板) [編輯]
返回迭代器和哨位之間的距離,或範圍起始和結尾間的距離
(函數模板) [編輯]
自增迭代器
(函數模板) [編輯]
自減迭代器
(函數模板) [編輯]