私はSTLが初めてで、slistで問題に直面しています。私はスリスタリストを持っています。このスリストから「バージョン」と仮定して、文字列の最後のエントリを削除する必要があります。どうやってやるの。
質問する
96 次
1 に答える
1
イテレータが直接指す要素を消去することはstd::slist<T>
できません。代わりに、その前にある要素を見つける必要があります。消去する最初の要素を見つけるにはstd::adjacent_find()
、述語の最初の引数を使用して無視します。
void erase_value(T const& value, std::slist<T>& l) {
auto it = std::adjacent_find(l.begin(), l.end(),
[=](T const&, T const& v) {
return v == value;
});
if (it != l.end()) {
l.erase_after(it);
}
}
最後の要素を削除するには、見つけ続ける必要があり、以前に見つかった要素を思い出し、最後に見つかった要素を削除するだけです。つまり、最初の要素を見つけてから、さらに多くの要素が存在する可能性がありますが、検索を続けます。
于 2012-10-03T13:51:35.893 に答える