Narzędzia użytkownika

Narzędzia witryny


copy_copy_n

Różnice

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

Odnośnik do tego porównania

Next revision
Previous revision
copy_copy_n [2009/04/30 04:05]
jan_dudziec utworzono
copy_copy_n [2009/04/30 04:24] (aktualna)
jan_dudziec
Linia 1: Linia 1:
 ====== Algorytmy copy i copy_n ====== ====== Algorytmy copy i copy_n ======
-Funkcja copy kopiuje elementy od pierwszego do ostatniego z kontenera pierwszego wstawiając je od elementu result kontenera docelowego. Używa przypisania *result = *first, *(result + 1) = *(first + 1) ...+Funkcja ​**copy** kopiuje elementy od pierwszego do ostatniego z kontenera pierwszego wstawiając je od elementu result kontenera docelowego. Używa przypisania ​ 
 +<code cpp>*result = *first, *(result + 1) = *(first + 1) ...</​code>​
  
 Elementy [first, last) z kontenera wzorcowego zostają skopiowane do elementów [resutl, result + (last-first)) kontenera docelowego. Elementy [first, last) z kontenera wzorcowego zostają skopiowane do elementów [resutl, result + (last-first)) kontenera docelowego.
  
-Analogicznie działa funkcja copy_n, tylko zamiast końca przedziału last pobiera liczbę elementów do skopiowania - n.+Analogicznie działa funkcja ​**copy_n**, tylko zamiast końca przedziału last pobiera liczbę elementów do skopiowania - n.
  
 Elementy [first, last) z kontenera wzorcowego zostają skopiowane do elementów [resutl, result + n) kontenera docelowego. Elementy [first, last) z kontenera wzorcowego zostają skopiowane do elementów [resutl, result + n) kontenera docelowego.
Linia 25: Linia 26:
  
 ===== Parametry ===== ===== Parametry =====
- * **first** - iterator wskazujący na pierwszy element do kopiowania z kontenera +  ​* **first** - iterator wskazujący na pierwszy element do kopiowania z kontenera 
- * **last** - iterator na jeden element za ostatnim do kopiowania z kontenera +  * **last** - iterator na jeden element za ostatnim do kopiowania z kontenera 
- * **result** - iterator na pierwszy element docelowego kontenera +  * **result** - iterator na pierwszy element docelowego kontenera 
- * **count** - liczba elementów do skopiowania+  * **count** - liczba elementów do skopiowania
  
 ===== Wymagania odnośnie parametrów ===== ===== Wymagania odnośnie parametrów =====
- * n >= 0 +  ​* n >= 0// 
- * [first, last) jest poprawnym przedziałem +  * [first, last) jest poprawnym przedziałem// 
- * [first, last) nie nachodzi na result. Jeśli nachodzi to wynik może być inny niż zamierzenia autora. Elementy są kopiowane od pierwszego do ostatniego, więc ostatnie elementy będą niepoprawne. +  * [first, last) nie nachodzi na result. Jeśli nachodzi to wynik może być inny niż zamierzenia autora. Elementy są kopiowane od pierwszego do ostatniego, więc ostatnie elementy będą niepoprawne. 
- * [result, result + n) lub [result, result + (last-first) ) są poprawnymi przedziałami+  * [result, result + n) lub [result, result + (last-first) ) są poprawnymi przedziałami
  
 ===== Zwracana wartość ===== ===== Zwracana wartość =====
Linia 40: Linia 41:
  
 ===== Wymagania na parametryzowane typy ===== ===== Wymagania na parametryzowane typy =====
-  * //InputIterator//  +  * InputIterator ​- iterator z funkcją pre i postinkrementacji a także wyłuskania wskazywanego elementu do odczytu 
-  * //OutputIterator// +  * OutputIterator ​- iterator z funkcją pre i postinkrementacji a także nadpisania wskazywanego obiektu operatorem '​='​. 
 +  * InsertIterator - przykład OutputIterator,​ który tworzy nowy element w kontenerze gdy zostanie na nim wywołany operator przyrównania. Uzycie tego operatora pozwala kopiować elementy do pustych kontenerów.
  
 ===== Złożoność ===== ===== Złożoność =====
Linia 47: Linia 49:
  
 ===== Przykład użycia ===== ===== Przykład użycia =====
 +Plik cpp do pobrania {{copy-copy_n.cpp}}.
  
-}+Krótki przykład:​ 
 +<code cpp> 
 +//wektory: v zawiera el. 0-19, v3 zawiera 10 el. 0 
 +//iteratory piaty, dziesiaty, pietnasty - wskazują na konkretne elementy wektora ​ v 
 +//iterator temp - pomocniczy 
 + 
 +//​Kopiowanie elementów 10-15 z wektora v do el. 0-5 do wektora v3 
 +//i zapisanie w temp iteratora na pierwszy za ostatnim zmienionym elementem w v3 
 + 
 +temp = copy(dziesiaty,​ pietnasty, v3.begin());​ 
 +     
 +copy(v3.begin(),​ v3.end(), ostream_iterator<​int>​(std::​cout,​ " "));  
 +cout << endl;  
 +//10 11 12 13 14 0 0 0 0 0 
 +     
 +//​Kopiowanie 5 elementów od 0 z wektora v do wektora v3 w miejsca od 6 
 +//temp wskazuje na 6ty element v3 
 +copy_n(v.begin(),​ 5, temp); 
 + 
 +copy(v3.begin(),​ v3.end(), ostream_iterator<​int>​(std::​cout,​ " "));  
 +cout << endl;     
 +//10 11 12 13 14 0 1 2 3 4
 </​code>​ </​code>​
copy_copy_n.1241057152.txt.gz · ostatnio zmienione: 2009/04/30 04:05 przez jan_dudziec