Witam
Funkcja otrzymuje listę wyrazów do obróbki. Ma sprawdzić czy w wyrazach listy występuje litera char1 . Jeśli wystąpi to usuwa dany wyraz z listy za pomocą metody QString.removeAt(). Nie wiem dlaczego gdy włączona jest metoda funkcja nie usuwa wszystkich wyrazów z literą a. Proszę o pomoc w wyjaśnieniu dlaczego tak się dzieje.
QList<QString> MainWindow::searchWord(QList<QString> lista)
{
QString char1 = ui->lineEdit_6->text();
for( int n = 0; n < lista.size(); n++)
{
for (int i = 0; i < lista[i].size(); i++)
{
if(char1 == lista[n][i])
{
qDebug() << lista[n];
lista.removeAt(n);
}
}
}
qDebug() << lista;
return lista;
}
Tak wygląda wynik działania z metodą removeAt():
"polać"
"polał"
"polań"
"polia"
"polja"
"polka"
"polna"
QList("polak", "polan", "polar", "polce", "polec", "poleć", "polej", "polek", "polem", "poleń", "polep", "poler", "polew", "poleź", "poleż", "polik", "polio", "polip", "polis", "poliu", "poliż", "polje", "polji", "polju", "polką", "polkę", "polki", "polko", "polną", "polne", "polni", "polny", "polom", "polon", "polor", "polot", "polub", "poluj")
Funkcja pomija polak, polan, polar.
Bez metody QString.removeAt():
QList<QString> MainWindow::searchWord(QList<QString> lista)
{
QString char1 = ui->lineEdit_6->text();
for( int n = 0; n < lista.size(); n++)
{
for (int i = 0; i < lista[i].size(); i++)
{
if(char1 == lista[n][i])
{
qDebug() << lista[n];
//lista.removeAt(n);
}
}
}
qDebug() << lista;
return lista;
}
"polać"
"polak"
"polał"
"polan"
"polań"
"polar"
"polia"
"polja"
"polka"
"polna"
QList("polać", "polak", "polał", "polan", "polań", "polar", "polce", "polec", "poleć", "polej", "polek", "polem", "poleń", "polep", "poler", "polew", "poleź", "poleż", "polia", "polik", "polio", "polip", "polis", "poliu", "poliż", "polja", "polje", "polji", "polju", "polka", "polką", "polkę", "polki", "polko", "polna", "polną", "polne", "polni", "polny", "polom", "polon", "polor", "polot", "polub", "poluj")