C++ std::generate不处理std::vector

C++ std::generate不处理std::vector,c++,g++,stl-algorithm,C++,G++,Stl Algorithm,报告的错误为 g++ -std=c++11 main.cpp 在/usr/include/c++/4.7/算法:63:0中包含的文件中, 来自main.cpp:3: /usr/include/c++/4.7/bits/stl_-algo.h:在“void std::generate(_-FIter,_-FIter,_-Generator,_-Generator)”的实例化中[使用_-FIter=u-gnu-cxx::u-normal_迭代器;_-Generator=int]: main.cpp

报告的错误为

g++ -std=c++11 main.cpp
在/usr/include/c++/4.7/算法:63:0中包含的文件中,
来自main.cpp:3:
/usr/include/c++/4.7/bits/stl_-algo.h:在“void std::generate(_-FIter,_-FIter,_-Generator,_-Generator)”的实例化中[使用_-FIter=u-gnu-cxx::u-normal_迭代器;_-Generator=int]:
main.cpp:11:42:从这里开始需要
/usr/include/c++/4.7/bits/stl_-algo.h:5083:2:错误:“u-gen”不能用作函数

对于这种情况下可能出现的错误,我没有任何线索或想法。

std::generate
获取函数对象并将其返回值应用于序列容器。但是
std::uniform\u int\u distribution::operator()
不返回函数对象,它实际上生成随机值并返回它。如果要传递函子,请使用lambda:

In file included from /usr/include/c++/4.7/algorithm:63:0,
                 from main.cpp:3:
/usr/include/c++/4.7/bits/stl_algo.h: In instantiation of ‘void std::generate(_FIter, _FIter, _Generator) [with _FIter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >; _Generator = int]’:
main.cpp:11:42:   required from here
/usr/include/c++/4.7/bits/stl_algo.h:5083:2: error: ‘__gen’ cannot be used as a function

因此
std::generate
需要一个函数对象,它不需要可以分配给容器的返回值?@user2485710它需要。返回值将是lambda返回的任何值,然后它将被分配给container.ops,我确信我已经这样做了,再次感谢。@user2485710:是的,
generate
需要一个函数对象。想想当你传递一个值时会发生什么
generate
只有一个值可用于所有500个元素,无法生成新的随机值。
In file included from /usr/include/c++/4.7/algorithm:63:0,
                 from main.cpp:3:
/usr/include/c++/4.7/bits/stl_algo.h: In instantiation of ‘void std::generate(_FIter, _FIter, _Generator) [with _FIter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >; _Generator = int]’:
main.cpp:11:42:   required from here
/usr/include/c++/4.7/bits/stl_algo.h:5083:2: error: ‘__gen’ cannot be used as a function
std::generate(k.begin(), k.end(), [&] { return d(mt); });
//                                ^^^^^^^^^^^^^^^^^^^^^