ベクターから重複を削除することを目的とした、次のおもちゃのコードがあります。
void overlap_removal(vector<int> &vec1, vector<int> &vec2) {
for (vector<int>::iterator it1 = vec1.begin(); it1 != vec1.end(); ++it1) {
for (vector<int>::iterator it2 = vec2.begin(); it2 != vec2.end(); ++it2) {
if ((*it1)*(*it2) < 10) {
vec1.erase();
}
}
}
}
実際のコードではもう少し複雑な比較を行っていますが、混乱を招きたくありません。問題は、これの実行に必然的に続くセグメンテーション違反です。これは、要素を削除してから同じベクトルをループし続けるという事実によるものだと思います。
コードを機能させるにはどうすればよいですか? これは正しい出発点ですか?前もって感謝します