std::rotate
Aus cppreference.com
                    
                                        
                    
                    
                                                            
                    |  | This page has been machine-translated from the English version of the wiki using Google Translate. 
 The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. | 
| Defined in header <algorithm>
  | ||
| template< class ForwardIt > void rotate( ForwardIt first, ForwardIt n_first, ForwardIt last ); | (bis C + +11) (seit C++11) | |
Tauscht die Elemente im Bereich 
[first, last) derart, dass das Element das erste Element n_first des neuen Bereichs gerät und n_first - 1 wird das letzte Element . 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.
| Inhaltsverzeichnis | 
[Bearbeiten] Parameter
| first, last | - |  der Bereich der Elemente zu drehen 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 | - |  das Element, um zum Beginn des neuen Bereichs zu bewegen 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. | ||
[Bearbeiten] Rückgabewert
(None) (bis C + +11)
Original:
(none) (bis 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.
Der Iterator gleich 
first + (last - n_first) (seit C++11)Original:
The iterator equal to 
first + (last - n_first) (seit 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.
[Bearbeiten] Komplexität
linear im Abstand 
first und 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.
[Bearbeiten] Mögliche Implementierung
| 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; } } } | 
[Bearbeiten] Beispiel
 std :: rotate ist eine gemeinsame Baustein in vielen Algorithmen. Dieses Beispiel zeigt, 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
[Bearbeiten] Siehe auch
|  Kopien und drehen eine Reihe von Elementen  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. (Funktions-Template) | |


