Narzędzia użytkownika

Narzędzia witryny


rotate_rotate_copy

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
rotate_rotate_copy [2009/04/28 14:20]
tprzedpe
rotate_rotate_copy [2009/04/28 15:07]
tprzedpe
Linia 40: Linia 40:
 Po wykonaniu się funkcji otrzymamy sekwencje: Po wykonaniu się funkcji otrzymamy sekwencje:
  
-3 2 4 6 8+ 1 3 2 4 6 8
  
 Element który znajdował się na piątej pozycji teraz znajduje się na pozycji pierwszej, a element który znajdował się na pozycji pierwszej teraz znajduje się na pozycji czwartej (last – (middle + 1), czyli 8 – 5 + 1 = 4). Element który znajdował się na piątej pozycji teraz znajduje się na pozycji pierwszej, a element który znajdował się na pozycji pierwszej teraz znajduje się na pozycji czwartej (last – (middle + 1), czyli 8 – 5 + 1 = 4).
  
 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>​
 +
 +Uzyskany wydruk:
 +
 +rotate:
 +
 +Elementy przed rotate:
 +     2 4 6 8 1 3 5
 +
 +Elementy po rotate dla middle = 5:
 +     1 3 5 2 4 6 8
 +
 +rotate_copy:​
 +
 +Elementy przed rotate_copy:​
 +     2 4 6 8 1 3 5
 +
 +Elementy po rotate_copy dla middle = 5:
 +     ​wektor wejściowy:
 +     2 4 6 8 1 3 5
 +     ​wektor wyjściowy:
 +     1 3 5 2 4 6 8
 +
rotate_rotate_copy.txt · ostatnio zmienione: 2009/04/28 15:07 przez tprzedpe