std::experimental::ranges::next
來自 cppreference.com
< cpp | experimental | ranges
定義於標頭檔案 <experimental/ranges/iterator> |
||
namespace { constexpr /* 未指定 */ next = /* 未指定 */; |
(ranges TS) (定製點物件) |
|
呼叫簽名 (Call signature) |
||
template< Iterator I > constexpr I next( I i ); |
(1) | |
template< Iterator I > constexpr I next( I i, ranges::difference_type_t<I> n ); |
(2) | |
template< Iterator I, Sentinel<I> S > constexpr I next( I i, S bound ); |
(3) | |
template< Iterator I, Sentinel<I> S > constexpr I next( I i, ranges::difference_type_t<I> n, S bound ); |
(4) | |
將迭代器 i 向前移動 n 次,或者直到達到 bound,以先發生者為準,並返回前進後的迭代器。
1) 等價於 ++i; return i;。
2) 等價於 ranges::advance(i, n); return i;。
3) 等價於 ranges::advance(i, bound); return i;。
4) 等價於 ranges::advance(i, n, bound); return i;。
目錄 |
[編輯] 自定義點物件
名稱 ranges::next
表示一個 自定義點物件,它是一個 函式物件,屬於一個 字面量 Semiregular
類型別(為便於說明,表示為 NextT
)。NextT
的所有例項都相等。因此,ranges::next
可以自由複製,並且其副本可以互換使用。
給定一組型別 Args...
,如果 std::declval<Args>()... 滿足上述 ranges::next
的引數要求,則 NextT
將滿足 ranges::Invocable<const NextT, Args...>。否則,NextT
的任何函式呼叫運算子都不會參與過載解析。
在每個定義 ranges::next
的翻譯單元中,它都指向自定義點物件的同一個例項。(這意味著它可以在行內函數和函式模板等中自由使用,而不會違反單一定義規則)。
[編輯] 返回值
前進後的迭代器。
[編輯] 注意
即使省略過載 (2) 的 n 的行為如同 n 為 1,省略過載 (4) 的 n 的行為實際上如同 n 為無窮大(總是前進到 bound)。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 參閱
(C++11) |
遞增迭代器 (函式模板) |
按給定距離前進迭代器 (函式模板) | |
遞減迭代器 (函式模板) | |
返回迭代器與哨兵之間,或範圍的起始與結束之間的距離 (函式模板) |