Comment initialiser un vecteur stl des objets qui ont eux-mêmes non-trivial constructeurs?

supposons que j'ai la classe suivante:

class MyInteger {
private:
  int n_;
public:
  MyInteger(int n) : n_(n) {};
  //MORE STUFF
};

Et supposons que cette classe n'ont pas un défaut trivial constructeur MyInteger(). Je doit toujours fournir une int de l'initialiser pour une raison quelconque. Et puis, supposons que quelque part dans mon code j'ai besoin d'un vector<MyInteger>. Comment initialiser chaque MyInteger composant dans ce vector<>?

J'ai deux situations (probablement la solution est la même, mais je vais dire quand même), une variable normale à l'intérieur d'une fonction:

int main(){
    vector<MyInteger> foo(10);  //how do I initialize each 
                                //MyInteger field of this vector? 
    doStuff(foo);
}

et que les données dans une classe:

class MyFunClass {
private:
   vector<MyInteger> myVector;

public:
   MyFunClass(int size, int myIntegerValue) : myVector(size) {}; 
   //what do I put here if I need the 
   //initialization to call MyInteger(myIntegerValue) for all 
   //components of myVector?
};

Est-il possible de le faire simplement dans la liste d'initialisation ou dois-je écrire l'initialisation à la main dans le MyFunClass(int, int) constructeur?

Cela semble donc très basique, et pourtant j'ai un peu raté mon livre et ne peut pas trouver dans le web.

  • Si le entier être le même pour toutes les instances à l'intérieur du vecteur?
  • C'est assez bon. Je veux juste savoir comment initialiser le vecteur. Le code réel où ce doute est apparu n'est pas exactement cela. Je voulais juste un simple code avec le même problème.
  • Dans mon code j'ai un vecteur de graphiques et d'une classe est une collection de graphes, et je suis en utilisant un vector<Graph> comme un conteneur. Le problème est que le nombre de graphes dans la collection doit être la même que la taille des Graphes, donc je dois passer à la courbe constructeur de la même int je passe à l'vecteur constructeur.