Pourquoi ne puis-je indexer un std :: vecteur dans la fenêtre immédiate?
-
24-09-2019 - |
Question
Alors, j'ai un vecteur
std::vector<std::string> lines.
Je remplis ce vecteur, et peut y accéder comme
std::string temp = lines[0];
Cependant, dans la fenêtre immédiate, à la fois
lines[0] - error:overloaded operator not found
et
lines.at(0) - error:symbol is ambiguous
ne fonctionnent pas du tout. Y at-il une astuce pour utiliser la fenêtre immédiate avec c ++. Je suis surtout venant d'un arrière-plan C #, où tout fonctionne bien (et je IntelliSense dans la fenêtre immédiate). Je ne m'y attendais pas C ++ pour être grand, mais je pensais que ça marcherait pour des choses en plus ints. Quelqu'un peut-il me dire ce que je fais mal? Merci.
EDIT: Je devrais être clair, rien ne fonctionne vraiment dans la fenêtre immédiate, ceci est juste un exemple simplifié
EDIT: Je suis en mode débogage
La solution
Les fenêtres immédiates et regarder ne prennent pas en charge les opérateurs surchargés. Il y a un certain soutien là-bas pour l'impression des conteneurs standard dans son ensemble de manière sensible (voir, par exemple, http://www.virtualdub.org/blog/pivot/entry.php?id=120 ), mais cela ne va pas être en mesure d'utiliser operator[]
sur eux.
Espérons que cela sera améliorée dans les révisions ultérieures du débogueur, mais pour l'instant, à regarder l'élément i'th d'un vecteur, essayez lines._Myfirst[i]
.
(_Myfirst
, dans les bibliothèques standard qui viennent avec VC ++, se trouve être la variable membre dans un std::vector
qui pointe vers le premier élément de la séquence. Donc, cela vient d'examiner un vecteur comme si elle était tout autre objet. Pour nous en sortir, je devais regarder les en-têtes ... pas très pratique, mais nous espérons que cela vous aidera. vous pouvez sans doute faire quelque chose de similaire avec les autres conteneurs, mais vous devrez regarder dans les en-têtes de comprendre comment .)
(Soit dit en passant, si vous avez travaillé en C #, C ++ débogueur semble probablement par comparaison un peu moins lisse en général, ce qui est juste un exemple. J'ai l'impression qu'il ya eu beaucoup plus de travail mettre dans le côté CLR).
Autres conseils
Dans Visual Studio versions de Nowaday (par exemple 2013/2015) variable membre _Myfirst n'existe plus pour un std :: variable vecteur. Utilisez _C_begin à la place - des moyens pour utiliser l'exemple donné par exemple lines._C_begin [i].