FreeBSD Manual Pages
std::prev(3) C++ Standard Libary std::prev(3) NAME std::prev - std::prev Synopsis Defined in header <iterator> template< class BidirIt > BidirIt prev( (since C++11) BidirIt it, (until C++17) typename std::iterator_traits<BidirIt>::difference_type n = 1 ); template< class BidirIt > constexpr BidirIt prev( (since C++17) BidirIt it, typename std::iterator_traits<BidirIt>::difference_type n = 1 ); Return the nth predecessor of iterator it. Parameters it - an iterator n - number of elements it should be descended Type requirements - BidirIt must meet the requirements of LegacyBidirectionalIterator. Return value The nth predecessor of iterator it. Complexity Linear. However, if BidirIt additionally meets the requirements of LegacyRandomAccessIterator, complexity is constant. Possible implementation template<class BidirIt> constexpr // since C++17 BidirIt prev(BidirIt it, typename std::itera- tor_traits<BidirIt>::difference_type n = 1) { std::advance(it, -n); return it; } Notes Although the expression --c.end() often compiles, it is not guaran- teed to do so: c.end() is an rvalue expression, and there is no iterator require- ment that specifies that decrement of an rvalue is guaranteed to work. In particular, when iterators are implemented as pointers or its operator-- is lvalue-ref-qualified, --c.end() does not compile, while std::prev(c.end()) does. Example // Run this code #include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{ 3, 1, 4 }; auto it = v.end(); auto pv = std::prev(it, 2); std::cout << *pv << '\n'; it = v.begin(); pv = std::prev(it, -2); std::cout << *pv << '\n'; } Output: 1 4 See also next increment 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::prev decrement an iterator by a given distance or to a bound (C++20) (niebloid) http://cppreference.com 2022.07.31 std::prev(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::prev&sektion=3&manpath=FreeBSD+Ports+15.0>
