FreeBSD Manual Pages
std::next(3) C++ Standard Libary std::next(3) NAME std::next - std::next Synopsis Defined in header <iterator> template< class InputIt > InputIt next( (since C++11) InputIt it, (until C++17) typename std::iterator_traits<InputIt>::difference_type n = 1 ); template< class InputIt > constexpr InputIt next( (since C++17) InputIt it, typename std::iterator_traits<InputIt>::difference_type n = 1 ); Return the nth successor of iterator it. Parameters it - an iterator n - number of elements to advance Type requirements - InputIt must meet the requirements of LegacyInputIterator. Return value The nth successor of iterator it. Complexity Linear. However, if InputIt additionally meets the requirements of LegacyRandomAccessIterator, complexity is constant. Possible implementation template<class InputIt> constexpr // since C++17 InputIt next(InputIt it, typename std::iterator_traits<InputIt>::difference_type n = 1) { std::advance(it, n); return it; } Notes Although the expression ++c.begin() often compiles, it is not guar- anteed to do so: c.begin() is an rvalue expression, and there is no LegacyInputItera- tor requirement that specifies that increment of an rvalue is guaranteed to work. In particular, when iterators are implemented as pointers or its operator++ is lvalue-ref-qualified, ++c.begin() does not compile, while std::next(c.begin()) does. Example // Run this code #include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{ 4, 5, 6 }; auto it = v.begin(); auto nx = std::next(it, 2); std::cout << *it << ' ' << *nx << '\n'; it = v.end(); nx = std::next(it, -2); std::cout << ' ' << *nx << '\n'; } Output: 4 6 5 Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior LWG 2353 C++11 next required LegacyForwardIterator LegacyIn- putIterator allowed See also prev decrement an iterator (C++11) (function template) advance advances an iterator by given distance (function template) distance returns the distance between two iterators (function template) ranges::next increment an iterator by a given distance or to a bound (C++20) (niebloid) http://cppreference.com 2022.07.31 std::next(3)
NAME | Synopsis | Parameters | Type requirements | Return value | Complexity | Possible implementation | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::next&sektion=3&manpath=FreeBSD+Ports+15.0>
