我是 STL 的新手,在 slist 中遇到问题。我有一个 slistalist。我需要从这个 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 回答