如何删除列表中的字符串

时间:2012-10-03 13:09:13

标签: c++

我是STL的新手,面临滑倒问题。 我有一个slistalist。我需要从这个slist中删除一个字符串的最后一个条目,假设“Version”。 我怎么能这样做。

1 个答案:

答案 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);
    }
}

要删除您需要继续查找的最后一个元素,请记住以前找到的元素,然后删除最后找到的元素。也就是说,找到第一个元素然后,虽然可能有更多,但继续寻找。