Ceci est ma première question. J'ai abandonné et j'utiliserai un foncteur roulé à la main pour cela, mais je suis curieux de savoir comment il est censé être fait. L'exemple inventé ci-dessous est destiné à redimensionner tous les vecteurs d'un vecteur de taille 9, en les remplissant de zéros. La ligne indiquée provoque MinGW GCC 4.5.0 à cracher beaucoup d'erreurs de modèle. J'ai essayé plusieurs permutations différentes, mais seulement affiché le code que je considère comme "plus proche de corriger" ci-dessous. Comment devrait-il être écrit? Remarque, je souhaite conserver la version à deux arguments de redimensionner.for_each lier le vecteur de redimensionner le vecteur
#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;
}
Nous vous remercions de votre participation.
La réponse d'Amnon a fonctionné pour moi. Pour ceux qui cherchent l'approche foncteur, je l'ai fait ce qui suit: modèle classe resize_functor { public: \t resize_functor (taille size_t, la valeur T): size_ (taille), VALUE_ (valeur) {}; \t modèle opérateur vide() (C & conteneur) { \t \t container.resize (size_, value_); \t} privé: \t size_t size_; \t T valeur_; }; For_each (stacked_vector.begin(), stacked_vector.end(), resize_functor (9u, 0)); –
Souhaite que je pourrais voir comment ajouter des balises de code dans les commentaires ... –