C++/Algorytmy w STL/Operacje modyfikujące

copy() edytuj

copy( iterator początek, iterator koniec, iterator początek_kopia )
Działanie
kopiuje ciąg (początek, koniec) do drugiego ciągu
Przykład
tworzy ciąg 10 liczb, po czym kopiuje je do drugiego (pustego) ciągu
int main()
{
   vector<int> ciag;
   for (int i = 0; i < 10; i++) 
      ciag.push_back(i);
 
   vector<int> kopia(10);
 
   copy( ciag.begin(), ciag.end(), kopia.begin() );
}

copy_backward() edytuj

copy_backward( iterator początek, iterator koniec, iterator koniec_kopia )
Działanie
kopiuje ciąg (początek, koniec) do drugiego ciągu, tak aby kończyły się razem z jego końcem
Przykład
tworzy ciąg 10 liczb, po czym kopiuje je do drugiego ciągu o długości 13 (elementy będą przesunięte, aby wyrównać do końca)
int main()
{
   vector<int> ciag;
   for( int i = 0; i < 10; i++ )
      ciag.push_back(i);
 
   vector<int> kopia(13);
 
   copy_backward( ciag.begin(), ciag.end(), kopia.end() );

   for( int i = 0; i < kopia.size(); i++)
      cout << kopia[i] << " ";
}

Wynikiem będzie 0 0 0 0 1 2 3 4 5 6 7 8 9.

fill() edytuj

fill( iterator początek, iterator koniec, wartość )
Działanie
zastępuje elementy ciągu podaną wartością.

fill_n() edytuj

fill_n( iterator początek, n, wartość )
Działanie
zastępuje n pierwszych elementów ciągu podaną wartością.

generate() edytuj

generate( iterator początek, iterator koniec, funkcja )
Działanie
zastępuje elementy ciągu wartościami będącymi wynikiem funkcji.

generate_n() edytuj

generate_n( iterator początek, n, funkcja )
Działanie
zastępuje n elementów ciągu wartościami będącymi wynikiem funkcji

transform() edytuj

transform( iterator początek, iterator koniec, iterator nowy_początek, funkcja )
transform( iterator początek, iterator koniec, iterator początek_drugiego, iterator nowy_początek, funkcja_dwuargumentowa )
Działanie
wykonuje podaną funkcję dla argumentów ze zbioru (początek, koniec) i zapisuje wyniki do zbioru zaczynającego się w nowy_początek. Druga wersja wykonuje funkcję dla pary argumentów, korzystając z drugiego zbioru (wskazywanego przez początek_drugiego).
Przykład
program wykonuje funkcję sqrt dla każdego z 5 elementów ciągu, zapisując wyniki w nowym ciągu. Niezbędne było określenie którego przeładowania funkcji sqrt uzywamy.
int main()
{
   double tablica[5] = {2, 3, 9, 16, 25};
   vector<double> v(tablica, tablica+5);
   vector<double> wyniki(5);

   transform(v.begin(), v.end(), wyniki.begin(), (double (*) (double)) sqrt );
   for( int i=0; i<5; i++ )
      cout << wyniki[i] << '\n';
}

remove() edytuj

Działanie
usuwa elementy o podanej wartości, np. spacje.

remove_if() edytuj

Działanie
usuwa elementy spełniające warunek

remove_copy() edytuj

Działanie
kopiuje ciąg, usuwając elementy o podanej wartości

remove_copy_if() edytuj

Działanie
kopiuje ciąg, usuwając elementy spełniające warunek

replace() edytuj

Działanie
zastępuje elementy o danej wartości inną wartością

replace_if() edytuj

Działanie
zastępuje elementy spełniające warunek

replace_copy() edytuj

Działanie
kopiuje ciąg, zastępując elementy o danej wartości inną wartością

replace_copy_if() edytuj

Działanie
kopiuje ciąg, zastępując elementy spełniające warunek