Problems eliminating node of a Vector

4

I have two classes:

class CAlbum
{
private:
    QString Nome; /**< Nome do Álbum */
    QString Descricao; /**< Descrição do Álbum */
    QString Diretoria; /**< Diretoria onde se encontra o Álbum */
    //QPixmap Imagem;
    std::vector <CInterprete> Interpretes; /**< Informação relativa aos Intérpretes associados ao Álbum */
    std::vector <CMusica> Musicas; /**< Músicas presentes no Álbum */
public: ...
}

class CInterprete
{
    QString Nome; /**< Nome do Intérprete */
    QString Nacionalidade; /**< Nacionalidade do Intérprete */
    QDate Nascimento; /**< Data de Nascimento do Intérprete */

public: ...
}

And one of the operators I have in class CAlbum is the following:

bool CAlbum::elimina_Interprete(const QString nome_Interprete){
    int i;
    for ( i = 0 ; i < (int) Interpretes.size() ; i++){
        if (Interpretes[i].retorna_Nome() == nome_Interprete){
            Interpretes.erase(Interpretes.begin()+i);
            return true;
        }
    }
    return false;
}

I tried to apply the same idea but with iterators and it did not work, always giving me an error

  

Debug Assertion Failed! Expression: vector erase iterator outside range "

How do I get rid of the range with this function?

    
asked by anonymous 29.05.2016 / 06:08

1 answer

3

Since you're using Qt because you did not use QVector ? This may solve the problem, or at least get more standardized and can improve performance. On the other hand, if it is to use the STL, then use all of it and forget the structures of Qt.

I can not exactly test this code, because it does not have everything I need to test, but I did a test the ideone with it algorithm and everything worked out.

    
29.05.2016 / 17:17