我在制作一个使用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