2
QListでSTLアルゴリズムを使用すると問題が発生します。実行中にクラッシュします。デバッガはラムダにもう一度足を踏み入れるので、クラッシュする前にエントリがあります。 (したがって、リストが空の場合、1回の反復でクラッシュし、リストに1つの要素がある場合 - 2回の反復などで)。QtコンテナでのSTLアルゴリズムの使用
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);
}
どのように問題を解決できますか?
へのプッシュバックことになるだろう
std::back_insert_iterator
を作成するためにstd::back_inserter
を使用する必要があります(http://en.cppreference.com/w/cpp/iterator/back_inserter)出力イテレータとして – WhiZTiMgetStudentEntryList()はコピーを返しませんか? –
あなたの問題は本当にQt関連ではありません。 'std :: list'と同じようにクラッシュします。 'copy_if'の使用を示す正しい例を見ましたか? –