我在製作一個使用std::generate_n
function的程序。我可以讓它與數組一起工作,但我無法弄清楚如何使它與列表容器一起工作。這裏是我有:std :: generate_n函數與列表
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
int current = 0;
int UniqueNumber() { return ++current; }
int main()
{
list<int> L;
list<int>::iterator it;
generate_n (L.begin(), 9, UniqueNumber);
cout << "list contains:";
for (it=L.begin(); it!=L.end(); ++it)
cout << ' ' << *it << '\n';
return 0;
}
輸出只顯示「列表包含:」後沒有任何東西。我知道我的輸出循環正常工作,因爲我用insert()方法手動嘗試了它,所以問題與generate_n函數有關。我想我錯了。任何人都知道我做了什麼?
[避免'使用命名空間std'](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – Manu343726
使用'std :: generate_n(std :: back_inserter(L),9,UniqueNumber)',除非你h在全局命名空間中爲未來的'current'計劃,你可以使它對'UniqueNumber()'是靜態的。 – WhozCraig