C++/Algorytmy w STL/Operacje modyfikujące
< C++ | Algorytmy w STL
copy()
edytujcopy( 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()
edytujcopy_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()
edytujfill( iterator początek, iterator koniec, wartość )
- Działanie
- zastępuje elementy ciągu podaną wartością.
fill_n()
edytujfill_n( iterator początek, n, wartość )
- Działanie
- zastępuje n pierwszych elementów ciągu podaną wartością.
generate()
edytujgenerate( iterator początek, iterator koniec, funkcja )
- Działanie
- zastępuje elementy ciągu wartościami będącymi wynikiem funkcji.
generate_n()
edytujgenerate_n( iterator początek, n, funkcja )
- Działanie
- zastępuje n elementów ciągu wartościami będącymi wynikiem funkcji
transform()
edytujtransform( 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