Ich habe ein Problem, STL-Algorithmus mit QList verwenden: während der Ausführung stürzt ab. Deburger macht noch einen Schritt in Lambda, also vor dem Crash-Einstieg ist. (Wenn also die Liste leer ist, stürzt sie bei 1 Iteration ab, wenn die Liste 1 Element enthält - bei 2 Iterationen usw.).Verwenden von STL-Algorithmen mit Qt-Containern
void FindDialog::findEntries()
{
QList<StudentEntry> searchResult;
condition = [this] (const StudentEntry &entry) -> bool {
// crashes here
return entry.name.getSurname() == surnameEdt1->text() &&
entry.group.getValue() == groupEdt->text();
};
std::copy_if(model->getStudentEntryList().begin(),
model->getStudentEntryList().end(),
searchResult.begin(),
condition);
}
Wie kann ich das Problem lösen?
Sie wahrscheinlich verwenden möchten, tun [ 'std :: back_inserter (search)'] (http://en.cppreference.com/w/cpp/iterator/back_inserter) als Ausgabe-Iterator – WhiZTiM
getStudentEntryList() gibt keine Kopie zurück, oder? –
Ihr Problem ist nicht wirklich Qt-bezogen. Es wird genau so mit 'std :: list' abstürzen. Haben Sie sich die richtigen Beispiele für die Verwendung von 'copy_if' angesehen? –