これは私の最初の質問です。私はあきらめて、手巻きのファンクタを使っていますが、どうやってやろうとしているのか不思議です。以下のような実際の例は、ベクトルのすべてのベクトルのサイズを、サイズが9であるように、NULLで埋めてサイズ変更することを意図しています。示された行はMinGW GCC 4.5.0に多くのテンプレートエラーを吐き出させます。私はいくつかの異なる順列を試しましたが、以下で「正しいに近い」と考えられるコードを掲載しました。どのように書かれていますか?注意しておきたいのは、引数の2つの引数を保持することです。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;
}
ありがとうございます。
アムノンの答えが私のために働いた。ファンクタアプローチを探している人のために、私は以下でした テンプレート クラスresize_functor { 公共: \t resize_functor(size_tのサイズ、T値):size_(サイズ)、VALUE_(値){}。 \tテンプレート void operator()(C&container){ \t \t container.resize(size_、value_); \t} プライベート: \t size_t size_; \t T value_; }; ... for_each(stacked_vector.begin()、stacked_vector.end()、resize_functor (9u、0)); –
私はコメントにコードタグを追加する方法を見ることができました... –