====== Algorytmy fill() i fill_n() ======
Algorytmy fill() i fill_n() umożliwiają zastąpienie wybranej liczny elementów z kolekcji.
===== Nagłówek =====
#include
===== Definicja fill() =====
template < class ForwardIterator, class T >
void fill ( ForwardIterator first, ForwardIterator last, const T& value )
{
while (first != last) *first++ = value;
}
===== Parametry replace=====
* ForwardIterator first - pierwszy element kolekcji który zostanie zastąpiony
* ForwardIterator last - element kolekcj który wyzancza koniec zakresu i nie zostanie już zastąpiony
* const T& value - wartość na którą zostaną zamienione elemnty z podanego zakresu
===== Definicja fill_n() =====
template < class OutputIterator, class Size, class T >
void fill_n ( OutputIterator first, Size n, const T& value )
{
for (; n>0; --n) *first++ = value;
}
===== Parametry fill_n()=====
* ForwardIterator first - pierwszy element który zostanie zamieniony
* Size n - ilość zamienonych elemntów zaczynając o delemntu first
* const T& value - wartość na którą zostaną zamienione elemnty z podanego zakresu
===== Przykład =====
#include
#include
#include
#include
using namespace std;
// Prosta klasa służąca do demonstracji
class Towar
{
private:
string status;
int cena;
public:
Towar()
{
status="W sklepie";
cena=100;
}
Towar(string c,int x)
{
status=c;
cena=x;
}
void wypisz()
{
cout<
Przykład pokazuje wykorzystanie obu algorytmów w połączeniu z stworzoną przez nas klasa i wektorem
int main()
{
//Stworzenie wektora z towarami;
vector towary;
//Tworzenie towarów
Towar nieprzeceniony;
Towar przeceniony("przecenione",50);
Towar zamowiony("zamowione",0);
//Dodanie towarów nieprzecenionych do wektora
for(unsigned int i=0;i<=5;i++)
towary.push_back(nieprzeceniony);
cout<<"Lista towarow przed zastosowaniem algorytmów: "<
Użycie algorytmu fill do zamiany towarów na przecenione oprócz dwóch ostatnich i wyświetlenie wyników
fill(towary.begin(),towary.end()-2,przeceniony);
cout<<"Lista towarow po zastosowaniu algorytmu fill() : "<
Użycie algorytmu fill_n do zamiany statusu przech pierwszych towarów na zamowione i wyświetlenie wyników
fill_n(towary.begin(),3,zamowiony);
cout<<"Lista towarow po zastosowaniu algorytmu fill_n(): "<