std:: prev
|
Definido en el encabezado
<iterator>
|
||
|
template
<
class
BidirIt
>
BidirIt prev ( BidirIt it, typename std:: iterator_traits < BidirIt > :: difference_type n = 1 ) ; |
(desde C++11)
(hasta C++17) |
|
|
template
<
class
BidirIt
>
constexpr
|
(desde C++17) | |
Devuelve el n ésimo predecesor (o - n ésimo sucesor si n es negativo) del iterador it .
Contenidos |
Parámetros
| it | - | un iterador |
| n | - | número de elementos que it debe descender |
| Requisitos de tipo | ||
-
BidirIt
debe cumplir con los requisitos de
LegacyBidirectionalIterator
.
|
||
Valor de retorno
Un iterador de tipo
BidirIt
que contiene el
n
º
predecesor (o el
-
n
º
sucesor si
n
es negativo) del iterador
it
.
Complejidad
Lineal.
Sin embargo, si
BidirIt
adicionalmente cumple con los requisitos de
LegacyRandomAccessIterator
, la complejidad es constante.
Implementación posible
template<class BidirIt> constexpr // desde C++17 BidirIt prev(BidirIt it, typename std::iterator_traits<BidirIt>::difference_type n = 1) { std::advance(it, -n); return it; } |
Notas
Aunque la expresión -- c. end ( ) suele compilar, no está garantizado que lo haga: c. end ( ) es una expresión rvalue, y no existe ningún requisito de iterador que especifique que el decremento de un rvalue esté garantizado para funcionar. En particular, cuando los iteradores se implementan como punteros o su operator -- está calificado como referencia lvalue, -- c. end ( ) no compila, mientras que std :: prev ( c. end ( ) ) sí lo hace.
Ejemplo
#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'; }
Salida:
1 4
Véase también
|
(C++11)
|
incrementa un iterador
(plantilla de función) |
|
avanza un iterador una distancia dada
(plantilla de función) |
|
|
devuelve la distancia entre dos iteradores
(plantilla de función) |
|
|
(C++20)
|
decrementa un iterador una distancia dada o hasta un límite
(objeto función de algoritmo) |