Różnice między wybraną wersją a wersją aktualną.
Next revision | Previous revision | ||
generate_generate_n [2008/12/11 23:06] bfugas utworzono |
generate_generate_n [2008/12/12 20:23] (aktualna) bfugas akapit |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
===== Szablony generate i generate_n ===== | ===== Szablony generate i generate_n ===== | ||
Szablony ''generate'' i ''generate_n'' pozwalają przypisać wartości zwracane przez //generator// do elementów tablicy lub kontenera udostępniającego iterator. Są szczególnie przydatne wtedy, gdy kontener chcemy wypełnić zgodnie z jakąś zależnością funkcyjną. Można z nich również korzystać w celu przypisania kolejnym elementom losowych wartości.\\ | Szablony ''generate'' i ''generate_n'' pozwalają przypisać wartości zwracane przez //generator// do elementów tablicy lub kontenera udostępniającego iterator. Są szczególnie przydatne wtedy, gdy kontener chcemy wypełnić zgodnie z jakąś zależnością funkcyjną. Można z nich również korzystać w celu przypisania kolejnym elementom losowych wartości.\\ | ||
- | Generatorem może być bezargumentowa funkcja lub //obiekt funkcyjny//((//obiekt funkcyjny//, //funktor// - obiekt udostępniający metodę ''operator()'')), zwracająca obiekty takiego samego typu, jak przechowywane w kontenerze. | + | Generatorem może być bezargumentowa funkcja lub //obiekt funkcyjny//((//obiekt funkcyjny//, //funktor// - obiekt udostępniający metodę ''operator()'')), zwracający obiekty takiego samego typu, jak przechowywane w kontenerze. |
===== generate ===== | ===== generate ===== | ||
Linia 67: | Linia 67: | ||
* otrzymanie takiego iteratora jest niemożliwe. | * otrzymanie takiego iteratora jest niemożliwe. | ||
- | Przykładowo takiej operacji (patrz {{:stl_algorytmy:generate_n.cpp}}): | + | Przykładowo takiej operacji (patrz {{:stl_algorytmy:generate2.cpp}}): |
<code cpp> | <code cpp> | ||
generate_n(ostream_iterator<GeneticAlgorithm::Individual>(os, " "), 10, ga.rig_) | generate_n(ostream_iterator<GeneticAlgorithm::Individual>(os, " "), 10, ga.rig_) | ||
</code> | </code> | ||
za pomocą ''generate'' wykonać się nie da. | za pomocą ''generate'' wykonać się nie da. | ||
+ | |||
+ | ===== Długi przykład ===== | ||
+ | //Długi// przykład zastosowania algorytmu dotyczy pewnego szkieletu algorytmu genetycznego, a dokładniej generacji populacji początkowej.\\ | ||
+ | Kolorowy kod programu znajduje się [[generate_kod|tutaj]]. To samo w postaci pliku źródłowego: {{:stl_algorytmy:generate2.cpp}} | ||
===== Podsumowanie ===== | ===== Podsumowanie ===== | ||
Szablony ''generate'' i ''generate_n'' umożliwiają łatwe wypełnianie kolekcji wartościami zwracanymi przez funkcje lub funktory. Są przydatne tam, gdzie wartości początkowe elementów kontenera zależą od stanu generatora. | Szablony ''generate'' i ''generate_n'' umożliwiają łatwe wypełnianie kolekcji wartościami zwracanymi przez funkcje lub funktory. Są przydatne tam, gdzie wartości początkowe elementów kontenera zależą od stanu generatora. | ||