Le code suivant provoque une erreur d'exécution. Dans le code donné, 'blocked' et 'passed' sont deux vecteurs de chaîne et ont respectivement des longueurs bl et pl. 'low' est un itérateur d'un vecteur de chaîne.L'utilisation de la fonction lower_bound dans la boucle provoque une erreur d'exécution?
int pos;
vector<string> f;
vector<string>::iterator low;
for(int i=0;i<bl;i++) {
string x=blocked[i];
low=lower_bound(passed.begin(),passed.end(),x); //lower_bound function is used on the vector 'passed'.
index=low-passed.begin(); //finding the index of the string in the vector 'passed'.
string y=passed[index];
int xlen=x.length();
int ylen=y.length();
int minlen=min(xlen,ylen);
for(int i=0;i<minlen;i++) {
if(x[i]!=y[i]) {
pos=i;
break;
}
}
string h=x.substr(0,pos+1);
f.push_back(h);
}
int d=f.size();
for(int i=0;i<f.size();i++) {
cout<<f[i]<<endl;
}
Le code entier du code ci-dessus est à https://ideone.com/4NgCWz. Plz aide!
En général, vous devriez vérifier si l'itérateur que vous obtenez des algorithmes est égal à 'passed.end()', car vous n'êtes pas autorisé à déréférencer l'itérateur final. Et dans ce cas, votre 'index' pourrait être éteint – user463035818