keito さんが書きました:
上のコードは自分で考えたものですが、list::eraseで削除する処理でエラーが起きてしまいます…
これ以上考えても正しいコードが分からないのでどのように書き換えるべきか教えてもらえると助かります
コンパイラがエラーメッセージで、どこがどう間違っているのかを教えて
くれるので助かるはずです。エラーメッセージはなんと出ましたか?
erase は list のメンバ関数です。
s_it は、iterator であって、list ではありません。
*f_it が list ですから、(*f_it).erase、すなわち
f_it->erase と書きましょう。
vector の要素である {2,3,4,5} を {2,3,5} にしたいのですよね。
cbegin で取得した f_it は const_iterator なので、
vector の要素である list を変更できません。
cbegin を begin に、cend を end に修正しましょう。
s_it の指す要素を erase したら、s_it はもう使えません。
for文の ++s_it を削除し、次のようにしましょう。
コード:
if (*s_it == 4)
s_it = f_it->erase(s_it);
else
++s_it;