Je sais idéalement ce qu'il faut ajouter à un std::vector
sans s'inquiéter, je devrais utiliser push_back()
. Cependant, mon problème est que j'ai besoin d'un code propre pour vérifier si la valeur que je saisis se trouve déjà dans le fichier std::vector
et si ce n'est pas le cas, je dois les classer par ordre séquentiel et croissant. Pour ce faire, je fais :
vector<Book>::iterator it;
it = std::find(books.begin(), books.end(), b);
if (it != books.end()) {
*it = b; // if b exists in books, overwrite the iterator
}
else {
vector<Book>::iterator _it;
_it = lower_bound(books.begin(), books.end(), b);
books.insert(_it, b); // here on an empty vector, _it has no values
}
En else
ne s'exécutera que si la valeur b
n'existe pas encore dans le std::vector
. S'il s'agit de la première valeur vérifiée, l'élément else
s'exécute (puisqu'il est vide) et le std::iterator
est à books[0]
( ?).
Ce qui me rend prudent quant à l'utilisation de cette méthode, c'est que lors du débogage, sur la page insert()
la valeur de _it
indique "Error Reading...." pour chacun des membres pour lesquels le std::iterator
pointe vers. Le programme fonctionne maintenant et produit les résultats escomptés, mais est-ce par erreur ?