この問題を解決するために、次の小さなコードを書きました。
for (std::list<std::vector<int>>::iterator i = l.begin(); i != l.end(); ++i) {
for (std::list<std::vector<int>>::iterator j = next(i, 1); j != l.end(); ++j) {
if (includes((*j).begin(), (*j).end(), (*i).begin(), (*i).end())) {
l.erase(j++);
}
}
}
基本的な考え方は、リストの要素が与えられた場合に、リストの残りの部分から何らかの基準 (この場合は包含関係) に一致する要素を削除することです。
これを実行すると、理解できないセグメンテーション違反が発生します。誰でもこれについての手がかりを教えてもらえますか?