std::rotate
Da cppreference.com.
                    
                                        
                    
                    
                                                            
                    |  | Questa pagina è stata tradotta in modo automatico dalla versione in ineglese della wiki usando Google Translate. 
 La traduzione potrebbe contenere errori e termini strani. Muovi il puntatore sopra al testo per vedere la versione originale. Puoi aiutarci a correggere gli gli errori. Per ulteriori istruzioni clicca qui. | 
| Defined in header <algorithm>
  | ||
| template< class ForwardIt > void rotate( ForwardIt first, ForwardIt n_first, ForwardIt last ); | (C fino + 11) (dal C++11) | |
Swap gli elementi nel 
[first, last) gamma in modo tale, che il n_first elemento diventa il primo elemento della nuova gamma e n_first - 1 diventa l'ultimo elemento. Original:
Swaps the elements in the range 
[first, last) in such a way, that the element n_first becomes the first element of the new range and n_first - 1 becomes the last element. The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
| Indice | 
[modifica] Parametri
| first, last | - |  l'intervallo di elementi da ruotare Original:  the range of elements to rotate The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | 
| n_first | - |  l'elemento di spostare l'inizio della nuova gamma Original:  the element to move to the beginning of the new range The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | 
| Type requirements | ||
| - ForwardItmust meet the requirements ofValueSwappableandForwardIterator. | ||
| -The type of dereferenced ForwardItmust meet the requirements ofMoveAssignableandMoveConstructible. | ||
[modifica] Valore di ritorno
(Nessuno) (C fino + 11)
Original:
(none) (C fino + 11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
L'iteratore pari a 
first + (last - n_first) (dal C++11)Original:
The iterator equal to 
first + (last - n_first) (dal C++11)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Complessità
lineare la distanza tra 
first e lastOriginal:
linear in the distance between 
first and lastThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[modifica] Possibile implementazione
| template<class ForwardIt> void rotate(ForwardIt first, ForwardIt n_first, ForwardIt last) { ForwardIt next = n_first; while (first != next) { std::swap(*first++, *next++); if (next == last) { next = n_first; } else if (first == n_first) { n_first = next; } } } | 
[modifica] Esempio
 std :: rotate è un elemento comune in molti algoritmi. Questo esempio dimostra insertion sort in C + + 
 
Original:
 std::rotate is a common building block in many algorithms. This example demonstrates insertion sort in C++ 
 
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <vector> #include <iostream> #include <algorithm> int main() { std::vector<int> v{2, 4, 2, 0, 5, 10, 7, 3, 7, 1}; std::cout << "before sort: "; for(int n: v) std::cout << n << ' '; std::cout << '\n'; // insertion sort for (auto i = v.begin(); i != v.end(); ++i) { std::rotate(std::upper_bound(v.begin(), i, *i), i, i+1); } std::cout << "after sort: "; for(int n: v) std::cout << n << ' '; std::cout << '\n'; // simple rotation to the left std::rotate(v.begin(), v.begin() + 1, v.end()); std::cout << "simple rotate left : "; for(int n: v) std::cout << n << ' '; std::cout << '\n'; // simple rotation to the right std::rotate(v.rbegin(), v.rbegin() + 1, v.rend()); std::cout << "simple rotate right : "; for(int n: v) std::cout << n << ' '; std::cout << '\n'; }
Output:
before sort: 2 4 2 0 5 10 7 3 7 1 after sort: 0 1 2 2 3 4 5 7 7 10 simple rotate left : 1 2 2 3 4 5 7 7 10 0 simple rotate right: 0 1 2 2 3 4 5 7 7 10
[modifica] Vedi anche
|  copie e ruotare una serie di elementi  Original:  copies and rotate a range of elements  The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (funzione di modello) | |