一周前,我从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));


(尽管如果您的用例需要,我仍然更喜欢构造函数选项)。

10-04 14:17