Narzędzia użytkownika

Narzędzia witryny


fill_fill_n

Algorytmy fill() i fill_n()

Algorytmy fill() i fill_n() umożliwiają zastąpienie wybranej liczny elementów z kolekcji.

Nagłówek

 #include<algorithm> 

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 <algorithm>
#include <vector>
#include <string>
#include <iostream>
 
 
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<<status<<endl;
	}
};

Przykład pokazuje wykorzystanie obu algorytmów w połączeniu z stworzoną przez nas klasa i wektorem

int main()
{
	//Stworzenie wektora z towarami;
	vector<Towar> 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: "<<endl;
	for(unsigned int i=0;i<=towary.size()-1;i++)
	 	towary[i].wypisz();
	cout<<endl;

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() : "<<endl;
	for(unsigned int i=0;i<=towary.size()-1;i++)
	 	towary[i].wypisz();
	cout<<endl;

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(): "<<endl;
	for(unsigned int i=0;i<=towary.size()-1;i++)
	 	towary[i].wypisz();
	cout<<endl;
 
 
}
fill_fill_n.txt · ostatnio zmienione: 2009/04/28 21:06 przez mroman