GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
* Sign Up! *

Support
Customer Portal
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::prev(3) C++ Standard Libary std::prev(3)

std::prev - std::prev


Defined in header <iterator>
template< class BidirIt > (since C++11)
BidirIt prev( BidirIt it, typename (until C++17)
std::iterator_traits<BidirIt>::difference_type n = 1 );
template< class BidirIt >


constexpr (since C++17)


BidirIt prev( BidirIt it, typename
std::iterator_traits<BidirIt>::difference_type n = 1 );


Return the n^th predecessor (or -n^th successor if n is negative) of iterator it.


it - an iterator
n - number of elements it should be descended


-
BidirIt must meet the requirements of LegacyBidirectionalIterator.


An iterator of type BidirIt that holds the n^th predecessor (or -n^th successor if n
is negative) of iterator it.


Linear.


However, if BidirIt additionally meets the requirements of
LegacyRandomAccessIterator, complexity is constant.


template<class BidirIt>
constexpr // since C++17
BidirIt prev(BidirIt it, typename std::iterator_traits<BidirIt>::difference_type n = 1)
{
std::advance(it, -n);
return it;
}


Although the expression --c.end() often compiles, it is not guaranteed to do so:
c.end() is an rvalue expression, and there is no iterator requirement 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.

// 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';
}


1
4


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)

2024.06.10 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.