Function 对于_,每个向量的绑定向量都要调整大小

Function 对于_,每个向量的绑定向量都要调整大小,function,bind,member,tr1,Function,Bind,Member,Tr1,这是我的第一个问题。我放弃了,并将为此使用一个手滚函子,但我很好奇它应该如何做。下面的人为示例旨在通过使用空值填充向量,将向量中的所有向量调整为大小9。指示的行导致MingwGCC4.5.0抛出大量模板错误。我尝试了几种不同的排列,但只张贴了我认为“最接近正确”的代码。应该怎样写?注意,我想保留resize的两个参数版本 #include <vector> using std::vector; #include <algorithm> using std::for_eac

这是我的第一个问题。我放弃了,并将为此使用一个手滚函子,但我很好奇它应该如何做。下面的人为示例旨在通过使用空值填充向量,将向量中的所有向量调整为大小9。指示的行导致MingwGCC4.5.0抛出大量模板错误。我尝试了几种不同的排列,但只张贴了我认为“最接近正确”的代码。应该怎样写?注意,我想保留resize的两个参数版本

#include <vector>
using std::vector;
#include <algorithm>
using std::for_each;
#include <tr1/functional>
using std::tr1::bind;
using std::tr1::placeholders::_1;

int main() {
 vector<vector<void *> > stacked_vector(20);
 for_each(stacked_vector.begin(),stacked_vector.end(),
  bind(&std::vector<void *>::resize,_1,9,0/*NULL*/));  // voluminous error output
 return 0;
}
#包括
使用std::vector;
#包括
使用std::for_;
#包括
使用std::tr1::bind;
使用std::tr1::占位符::\u 1;
int main(){
矢量叠加_矢量(20);
对于每个(堆叠的向量.begin(),堆叠的向量.end(),
bind(&std::vector::resize,_1,9,0/*NULL*/);//大量错误输出
返回0;
}

非常感谢您的输入。

很难说没有看到错误输出(坦率地说,即使有错误输出)。但是,请尝试将NULL作为
void*
类型传递:
static\u cast(0)
。否则,
bind
返回的对象会尝试提供一个int值作为
resize
的第二个参数,很难说没有看到错误输出(坦率地说,即使有了它)。但是,请尝试将NULL作为
void*
类型传递:
static\u cast(0)
。否则,
bind
返回的对象将尝试提供一个int值作为
resize
的第二个参数

#include <functional> 
#include <algorithm> 
#include <iostream> 
#include <vector>


int main() 
{ 
    typedef std::vector<int> vec_int;
    typedef std::vector<vec_int> vec_vec_int;

    // Do this to make the   _1    work
    using namespace std::placeholders; 

    static const int FIRST_DIM = 5;
    static const int SECOND_DIM = 10;
    static const int DEFAULT_VALUE = 66;

    vec_vec_int v(FIRST_DIM);

    std::for_each(v.begin(), v.end(), 
        std::bind(&vec_int::resize, _1, SECOND_DIM, DEFAULT_VALUE));

    std::cout << v[4][9];

    return (0); 
} 
#包括
#包括
#包括
#包括
int main()
{ 
typedef std::向量向量int;
typedef std::vector vec_vec_int;
//这样做可以使_1正常工作
使用名称空间std::占位符;
静态常数int FIRST_DIM=5;
静态常数int SECOND_DIM=10;
静态常数int默认值=66;
vec_vec_int v(第一个尺寸);
std::for_each(v.begin(),v.end(),
std::bind(&vec_int::resize,_1,SECOND_DIM,DEFAULT_值));
std::cout试试这个

#include <functional> 
#include <algorithm> 
#include <iostream> 
#include <vector>


int main() 
{ 
    typedef std::vector<int> vec_int;
    typedef std::vector<vec_int> vec_vec_int;

    // Do this to make the   _1    work
    using namespace std::placeholders; 

    static const int FIRST_DIM = 5;
    static const int SECOND_DIM = 10;
    static const int DEFAULT_VALUE = 66;

    vec_vec_int v(FIRST_DIM);

    std::for_each(v.begin(), v.end(), 
        std::bind(&vec_int::resize, _1, SECOND_DIM, DEFAULT_VALUE));

    std::cout << v[4][9];

    return (0); 
} 
#包括
#包括
#包括
#包括
int main()
{ 
typedef std::向量向量int;
typedef std::vector vec_vec_int;
//这样做可以使_1正常工作
使用名称空间std::占位符;
静态常数int FIRST_DIM=5;
静态常数int SECOND_DIM=10;
静态常数int默认值=66;
vec_vec_int v(第一个尺寸);
std::for_each(v.begin(),v.end(),
std::bind(&vec_int::resize,_1,SECOND_DIM,DEFAULT_值));

库特·阿姆农的答案对我很有用。对于任何寻找函子方法的人,我做了以下工作:模板类resize_函子{public:resize_函子(size_t size,t value):size_(size),value_(value){};模板void操作符()(C&container){container.resize(size_,value_)}private:size_t size_;t value_(stacked_vector.begin()、stacked_vector.end()、resize_函子(9u,0));阿姆农的答案对我很有用。对于任何寻找函子方法的人,我都做了以下工作:模板类resize_函子{public:resize_函子(size_t size,t value):size_u(size),value_u(value){};模板无效操作符()(C&container){container.resize(size,value})}private:size\u t size\uu;t value\uj;.................................对于每个(堆叠的\u向量.begin()、堆叠的\u向量.end()、调整大小的\u函子(9u,0));