这是我的第一个问题。我放弃了,并且会使用一个手卷函子来做这件事,但我很好奇它应该如何完成。下面这个人为设计的例子旨在将矢量中的所有矢量调整为9,并用空值填充它们。指示的行导致MinGW GCC 4.5.0发出大量模板错误。我尝试了几种不同的排列方式,但只发布了下面我认为“最接近正确”的代码。它应该如何书写?请注意,我想保留调整大小的双参数版本。for_each绑定矢量调整大小
#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;
}
非常感谢您的意见。
Amnon的答案适合我。为寻找函子的做法,我做了以下内容: 模板 类resize_functor { 市民: \t resize_functor(为size_t尺寸,T值):size_(大小),VALUE_(值){}; ()(C&container){ \t template void operator \t} private: \t size_t size_; \t T value_; }; ... for_each(stacked_vector.begin(),stacked_vector.end(),resize_functor (9u,0)); –
2011-01-26 21:47:33