Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
rotate_rotate_copy [2009/04/28 14:20] tprzedpe |
rotate_rotate_copy [2009/04/28 14:23] tprzedpe |
||
---|---|---|---|
Linia 45: | Linia 45: | ||
Algorytm rotate_copy działa na identycznej zasadzie co powyżej opisany algorytm rotate, lecz zamiast zmieniać oryginalną sekwencji kopiuje wynik do kontenera wskazanego przez argument result. Elementy z zakresu (first, last) są kopiowane do zakresu (result, result + (last – first)). | Algorytm rotate_copy działa na identycznej zasadzie co powyżej opisany algorytm rotate, lecz zamiast zmieniać oryginalną sekwencji kopiuje wynik do kontenera wskazanego przez argument result. Elementy z zakresu (first, last) są kopiowane do zakresu (result, result + (last – first)). | ||
+ | |||
+ | ===== Przykład użycia ===== | ||
+ | |||
+ | <code cpp> | ||
+ | #include <algorithm> | ||
+ | #include <vector> | ||
+ | #include <iostream> | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | |||
+ | //rotate: | ||
+ | cout << "rotate:" << endl << endl; | ||
+ | |||
+ | //Inicjalizacja wektora przy użyciu tablicy int | ||
+ | int arr[7] = {2,4,6,8,1,3,5}; | ||
+ | vector<int> v_rotate(arr, arr+7); | ||
+ | |||
+ | //Wydruk elementów przed użyciem algorytmu | ||
+ | cout << "Elementy przed rotate: " << endl << " "; | ||
+ | for (int i = 0; i < 7; i++) | ||
+ | { | ||
+ | cout << v_rotate[i] << " "; | ||
+ | } | ||
+ | cout << endl << endl; | ||
+ | // Wydruk: 2 4 6 8 1 3 5 | ||
+ | |||
+ | //Rotacja | ||
+ | rotate(v_rotate.begin(), v_rotate.begin()+4, v_rotate.end()); | ||
+ | |||
+ | //Wydruk elementów po użyciu algorytmu | ||
+ | cout << "Elementy po rotate dla middle = 5: " << endl << " "; | ||
+ | for (int i = 0; i < 7; i++) | ||
+ | { | ||
+ | cout << v_rotate[i] << " "; | ||
+ | } | ||
+ | cout << endl << endl; | ||
+ | // Wydruk: 1 3 5 2 4 6 8 | ||
+ | |||
+ | //rotate_copy: | ||
+ | cout << "rotate_copy:" << endl << endl; | ||
+ | |||
+ | //Inicjalizacja wektora przy użyciu tablicy int | ||
+ | vector<int> v_rotate_copy1(arr, arr+7); | ||
+ | |||
+ | //Inicjalizacja wektora pustego | ||
+ | vector<int> v_rotate_copy2(7); | ||
+ | |||
+ | //Wydruk elementów przed użyciem algorytmu | ||
+ | cout << "Elementy przed rotate_copy: " << endl << " "; | ||
+ | for (int i = 0; i < 7; i++) | ||
+ | { | ||
+ | cout << v_rotate_copy1[i] << " "; | ||
+ | } | ||
+ | cout << endl << endl; | ||
+ | // Wydruk: 2 4 6 8 1 3 5 | ||
+ | |||
+ | //Rotacja | ||
+ | rotate_copy(v_rotate_copy1.begin(), v_rotate_copy1.begin()+4, v_rotate_copy1.end(), v_rotate_copy2.begin()); | ||
+ | |||
+ | //Wydruk elementów po użyciu algorytmu | ||
+ | cout << "Elementy po rotate_copy dla middle = 5: " << endl << " "; | ||
+ | cout << "wektor wejściowy:" << endl << " "; | ||
+ | for (int i = 0; i < 7; i++) | ||
+ | { | ||
+ | cout << v_rotate_copy1[i] << " "; | ||
+ | } | ||
+ | cout << endl << " "; | ||
+ | // Wydruk 2 4 6 8 1 3 5 | ||
+ | cout << "wektor wyjściowy:" << endl << " "; | ||
+ | for (int i = 0; i < 7; i++) | ||
+ | { | ||
+ | cout << v_rotate_copy2[i] << " "; | ||
+ | } | ||
+ | cout << endl << endl; | ||
+ | // Wydruk: 1 3 5 2 4 6 8 | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </code> |