Debug assertion failed. C++ vecteur indice hors de gamme
le code suivant remplit le vecteur avec 10 valeurs dans la première boucle for. dans la deuxième boucle, je veux les éléments de vecteur d'être imprimé.
La sortie est jusqu'au cout déclaration avant le j de la boucle.Donne une erreur de vecteur d'indice en dehors de la gamme.
#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{ vector<int> v;
cout<<"Hello India"<<endl;
cout<<"Size of vector is: "<<v.size()<<endl;
for(int i=1;i<=10;++i)
{
v.push_back(i);
}
cout<<"size of vector: "<<v.size()<<endl;
for(int j=10;j>0;--j)
{
cout<<v[j];
}
return 0;
}
OriginalL'auteur Abhishek Jain | 2013-10-19
Vous devez vous connecter pour publier un commentaire.
Peu importe comment vous l'indice de la pushbacks votre vecteur contient 10 éléments indexés à partir de
0
(0
,1
, ...,9
). Donc, dans votre deuxième bouclev[j]
est pas valide, lorsquej
est10
.Cela va corriger l'erreur:
En général, il vaut mieux penser les indices que
0
de la base, donc je vous suggère de changer aussi votre première boucle:Aussi, pour accéder aux éléments d'un conteneur, le idiomatiques approche consiste à utiliser des itérateurs (dans ce cas: un itérateur inverse):
OriginalL'auteur BartoszKP
v
a10
élément, l'indice commence à partir de0
à9
.vous devez mettre à jour
for
boucle àOu de l'utilisation itérateur inverse pour imprimer élément dans l'ordre inverse
OriginalL'auteur billz
ce type d'erreur peut se produire lorsque vous essayez d'accéder aux données par le biais de l'index, dans lequel les données de données n'a pas été attribué.
par exemple
le code vous donnera l'erreur (vecteur d'indice en dehors de la plage)
parce que vous êtes accédant à l'arr[10] qui n'a pas été attribuer encore.
OriginalL'auteur suraj kumar