generate_n
將函式物件產生的值指派給範圍內的指定項目數,並返回到超過最後一個指定值的位置。
template<class OutputIterator, class Diff, class Generator> void generate_n( OutputIterator First, Diff Count, Generator Gen);
參數
First
輸出迭代器,指向範圍中第一個項目的位置 (要指派值至其中)。Count
帶正負號或不帶正負號的整數類型,指定要由產生器函式指派值的項目數。Gen
不搭配引數呼叫的函式物件,用於產生要指派到範圍中每個項目的值。
備註
會為範圍中的每個項目叫用函式物件,且不需要在每次呼叫時傳回相同的值。 例如,其可能會從檔案讀取,或是參考及修改本機狀態。 產生器的結果類型必須是可以轉換為轉送至此範圍之迭代器的值類型。
參考的範圍必須有效;所有指標必須是可取值且在序列中,還必須要可以從第一個位置開始透過增量而取得最後一個位置。
線性具有複雜度,因此需要對產生器執行明確的 Count 呼叫。
範例
// 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);
}
輸出
vector v is: 1 -9 -3 2 -9
deque dq is: -9 7 -2 4 8
需求
標頭:<algorithm>
命名空間: std