generate_n
Přiřadí hodnoty generované funkce objektu na zadaný počet prvků v oblasti a vrátí jednu pozici za poslední přiřazenou hodnotu.
template<class OutputIterator, class Diff, class Generator> void generate_n( OutputIterator First, Diff Count, Generator Gen);
Parametry
First
Výstup iterace adresování pozice prvním elementem v rozsahu, do kterého mají být přiřazeny hodnoty.Count
Typ znaménkem nebo bez znaménka celé číslo určující počet elementů na jí přiřadit hodnotu funkcí generátor.Gen
Objekt funkce, která je volána bez argumentů, který se používá ke generování hodnoty, které mají být přiřazeni k jednotlivým elementů v rozsahu.
Poznámky
Objekt funkce je volána pro každý prvek v rozsahu a není nutné, aby vrací stejnou hodnotu pokaždé, když je volána.Ji může, například čtení ze souboru nebo odkazovat na a měnit místní stav.Instaluje se generátor výsledný typ musí být převést na typ hodnoty vpřed iterátory pro rozsah.
Rozsah odkazuje musí být platná. všechny ukazatele musí být dereferenceable, a v sekvenci, musí být poslední pozice dostupný od prvního podle incrementation.
Složitost je lineární s přesně Count volání generátor bylo vyžadováno.
Příklad
// cl.exe /EHsc /nologo /W4 /MTd
#include <vector>
#include <deque>
#include <iostream>
#include <string>
#include <algorithm>
#include <random>
using namespace std;
template <typename C> void print(const string& s, const C& c) {
cout << s;
for (const auto& e : c) {
cout << e << " ";
}
cout << endl;
}
int main()
{
const int elemcount = 5;
vector<int> v(elemcount);
deque<int> dq(elemcount);
// Set up random number distribution
random_device rd;
mt19937 engine(rd());
uniform_int_distribution<int> dist(-9, 9);
// Call generate_n, using a lambda for the third parameter
generate_n(v.begin(), elemcount, [&](){ return dist(engine); });
print("vector v is: ", v);
generate_n(dq.begin(), elemcount, [&](){ return dist(engine); });
print("deque dq is: ", dq);
}
Výstup
vector v is: 1 -9 -3 2 -9
deque dq is: -9 7 -2 4 8
Požadavky
Záhlaví: < algoritmus >
Obor názvů: std