J'essaie d'utiliser un grand vecteur 2D que je veux allouer avec new (car il est grand).affecter des éléments dans un vecteur déclaré avec new. C++
si je dis:
vector< vector<int> > bob;
bob = vector< vector<int> >(16, vector<int>(1<<12,0));
bob[5][5] = 777;
cela fonctionne. Mais si je dis:
std::vector< std::vector<int> > *mary;
mary = new vector< vector<int> >(16, vector<int>(1<<12, 0));
mary[5][5] = 777;
cela ne fonctionne pas et je reçois l'erreur:
Erreur 1 erreur C2679: binaire « = »: aucun opérateur trouvé qui prend un opérande à droite de type ' int '(ou il n'y a pas de conversion acceptable) c: \ Utilisateurs \ jsparger \ Documents \ Mon Dropbox \ ARI \ VME_0.01 \ VME_0.01 \ V965.cpp 11 VME_0.01
Évidemment, je suis nouveau en C++. Quelqu'un pourrait-il expliquer quelle syntaxe j'ai besoin d'utiliser pour effectuer cette opération. mary est un pointeur, donc je peux voir pourquoi cela ne marcherait pas, mais * mary [5] [5] = ce qui n'est pas autorisé non plus à cause de "nouveau", n'est-ce pas?
Merci pour l'aide. Ce vecteur est ce que je vais utiliser pour le moment car il semble assez facile à comprendre pour mon petit cerveau C++, mais n'hésitez pas à me le faire savoir si un grand vecteur comme celui-ci est une mauvaise idée, etc
Merci beaucoup .
Editer: Je me trompe sur le "non autorisé en raison de la nouvelle". Je ne sais pas où j'ai mal lu cela, parce que cela fonctionne évidemment, et cela n'aurait pas beaucoup de sens de ne pas le faire. Merci.
Que voulez-vous dire "* mary [5] [5] = ce qui n'est pas autorisé non plus à cause de" nouveau ""? Précisez s'il vous plaît.Vous vous trompez probablement ici. – atzz