一周前,我从gcc4.0升级到了llvm gcc4.2。除了一件事,一切都进行得很好,我真的很难解决,因为我更喜欢音频信号处理。所以我真的希望你们中有人能帮助我。我的问题是stl_vector.h中:: resize的使用已完全更改。
在gcc4.0中,以下代码编译良好:
std::vector< std::vector<myData> > mMy;
std::for_each( mMy.begin(), mMy.end(),
std::bind2nd(std::mem_fun_ref(&std::vector<myData>::resize), numMy) );
在gcc4.2中不会编译并显示错误:
没有匹配的函数来调用mem_fun_ref ..
我很确定我不知道如何正确实现:: resize,有人可以告诉我该怎么做。如果您能给我看一个正确的代码示例,我很高兴,但是也可以帮助我理解提示(书)和关键字,以帮助我理解这一点。
非常感谢你的帮助 ..
亲切的问候,
z
最佳答案
确保你有
#include <functional>
在您的收录中。
但是,这样做会更容易(如果您尝试设置myData的所有向量的大小。
std::vector<std::vector<myData > > mMy (size, std::vector(numMy) );
这里每个向量的大小将为numMy
您也知道gcc 4.2确实还很老,如果可以的话,我强烈建议您使用gcc 4.6。
使用gcc 4.6,您可以用以下方法摆脱掉所有mem_func:
std::for_each( mMy.begin(), mMy.end(),
std::bind(std::vector<myData>::resize, std::placeholders::_1, numMy));
(尽管如果您的用例需要,我仍然更喜欢构造函数选项)。