l'initialisation d'un vector de vector<double> c++
Salut, je veux initialiser une taille 9 vecteur dont les éléments sont des vecteurs de la taille, de 5. Je veux initialiser tous les éléments du vecteur nul.
Est de cette façon correcte?
vector<double> z(5,0);
vector< vector<double> > diff(9, z);
OU est-il une façon plus simple de faire cela?
C'est la bonne façon de créer un vecteur 2D. Vous êtes juste d'être un peu plus prolixe est tout.
Est-ce 9x5 taille fixe?
Oui, je sais que la taille avant de la main. Il a simplement choisi le 9 et le 5 pour être un hasard ints pour cette question.
Est-ce 9x5 taille fixe?
Oui, je sais que la taille avant de la main. Il a simplement choisi le 9 et le 5 pour être un hasard ints pour cette question.
OriginalL'auteur smilingbuddha | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
Vous pourriez potentiellement faire en une seule ligne:
Vous pourriez aussi envisager d'utiliser boost::multi_array pour une plus grande efficacité de stockage et d'accès (il permet d'éviter la double pointeur d'indirection).
vector<double>(5)
suffit.vector<double>(5, 0)
n'est pas obligatoire, tant que le deuxième argument est0
.OriginalL'auteur
Vous pouvez le mettre dans une seule ligne:
Cela évite le solde non utilisé de variable locale.
(En pré-C++11 compilateurs vous devez laisser un espace,
> >
.)>>
dans votre syntaxe. Certains compilateurs, un espace entre ces symboles.ces compilateurs ne sont plus conformes à! 😛
conforme ou pas, ils existent 🙂
Fernandes: dans ce cas, il n'existe pas de aucun C++ conforme implémentations. Au moins, je ne crois pas que quiconque a livré fini C++11 mise en œuvre encore. Délibérément d'écrire du code qui ne compile pas, c'est très bien pour afficher votre loyauté à la nouvelle norme, mais en réalité, C++03 n'est pas encore morts. Cela dit, je pense que les principaux compilateurs ont fait de cette fonctionnalité particulière.
Oh, bien sûr. C'est pourquoi j'ai utilisé un 😛 smiley.
OriginalL'auteur
vector< vector<double> > diff(9, std::vector<double>(5, 0));
Toutefois, dans le cas particulier où les tailles sont connus au moment de la compilation, vous pourrait utiliser un C tableau:
double diff[9][5] = { { 0 } };
OriginalL'auteur
Assez sûr que cela va fonctionner:
OriginalL'auteur
Si les tailles sont fixes, vous pouvez aller avec
std::array
à la place:std::array
qui maintient tout dans l'étendue locale, donc si ce tableau est trop grand, vous pourriez déclencher une erreur dont le nom m'échappe.Un débordement de pile?
OriginalL'auteur