我是STL的新手,面临滑倒问题。 我有一个slistalist。我需要从这个slist中删除一个字符串的最后一个条目,假设“Version”。 我怎么能这样做。
答案 0 :(得分: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);
}
}
要删除您需要继续查找的最后一个元素,请记住以前找到的元素,然后删除最后找到的元素。也就是说,找到第一个元素然后,虽然可能有更多,但继续寻找。