[C++] problème de list : erase & insert
Résolu/Fermé
A voir également:
- [C++] problème de list : erase & insert
- List disk - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Liste déroulante de choix excel - Guide
- Liste de diffusion whatsapp - Guide
- Zn-401s code list ✓ - Forum Téléviseurs
1 réponse
Bon,
finalement, a force de chercher a comprendre, ça finit enfin par marché!
Plus besoin de m'aider mais je donne quand même la solution à la communauté.
La solution était que je devais repositionner correctement l'itérateur it à l'endroit que je voulais inséré.
Je croyais d'après les exemples de la doc, que je n'avais pas besoin de repositionné l'itérateur pour insérer mais je me serais trompé.
J'ai ensuite pensé qu'en faisant --it; avant d'insérer allait fonctionner, mais cela marchait pas vraiment bien.
Puis j'ai tout simplement repris mes premières lignes de ma fonction, à savoir placer l'itérateur au début, puis l'avancer jusqu'a la position voulu. ET CA MARCHE !!!
Voilà le nouveau code qui fonctionne désormais :
Si vous avez des moyens pour optimiser ce code, n'hésitez pas de le faire remarqué.
finalement, a force de chercher a comprendre, ça finit enfin par marché!
Plus besoin de m'aider mais je donne quand même la solution à la communauté.
La solution était que je devais repositionner correctement l'itérateur it à l'endroit que je voulais inséré.
Je croyais d'après les exemples de la doc, que je n'avais pas besoin de repositionné l'itérateur pour insérer mais je me serais trompé.
J'ai ensuite pensé qu'en faisant --it; avant d'insérer allait fonctionner, mais cela marchait pas vraiment bien.
Puis j'ai tout simplement repris mes premières lignes de ma fonction, à savoir placer l'itérateur au début, puis l'avancer jusqu'a la position voulu. ET CA MARCHE !!!
Voilà le nouveau code qui fonctionne désormais :
void Menu::setText(string newText, int currentIndex){ //Effacer le menu element du vecteur, en partant du début + la position suppose. list<menuElement>::iterator it = m_menuElementList.begin(); advance(it, currentIndex); m_menuElementList.erase(it); //*****Modif qui fonctionne it = m_menuElementList.begin(); advance(it, currentIndex); //***** menuElement m_el; //Génére la surfaceHover m_el.surfaceHover = Surface::surfacePolice(this->m_fontPath, this->m_fontSize, newText, this->m_colorHover); //Génére la surfaceNormal m_el.surfaceNormal = Surface::surfacePolice(this->m_fontPath, this->m_fontSize, newText, this->m_colorNormal); //ajoute a la liste au bon endroit this->m_menuElementList.insert(it, m_el); }
Si vous avez des moyens pour optimiser ce code, n'hésitez pas de le faire remarqué.