rotate

De cppreference.com
Saltar a: navegación, buscar

Sintaxis:

#include <algorithm>
 
template< class ForwardIterator >
void rotate( ForwardIterator inicio, ForwardIterator pivote, ForwardIterator final );

El algoritmo rotate() mueve los elementos del rango [inicio,final) hacia la "izquierda" 8es decir, hacia la dirección de inicio) de manera tal que la posición marcada por pivote se convierte en el nuevo inicio; su antecesor pivote - 1 se convierte en el nuevo final.

unique() se ejecuta en tiempo lineal en el tamaño del rango.

[editar] Modelo de Implementación

Una implementación de rotate() tendrá un comportamiento similar al código siguiente:

template<class ForwardIterator>
ForwardIterator unique(ForwardIterator inicio, ForwardIterator pivote, ForwardIterator final)
{
    ForwardIterator proximo = pivote;
    while (inicio != proximo) {
        std::swap(*inicio++, *proximo++);
        if (proximo == final) proximo = pivote;
        else if (inicio == pivote) pivote = proximo;
    }
}

[editar] Ejemplo

#include <iostream>
#include <algorithm>
#include <vector>
 
int main () {
    int myints[] = {7, 9, 11, 13, 15, 17};
    std::vector<int> v(myints, myints + 6);
 
    std::rotate(v.begin(), v.begin() + 3, v.end());
                                            ''                ^                                    
    for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
        std::cout << *it << " ";
    }
 
    return 0;
}

Salida:

13 15 17 7 9 11

[editar] Tópicos Relacionados

rotate_copy, copy

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas
Otros idiomas