美文网首页
删除std::string中的特定的字符

删除std::string中的特定的字符

作者: 梦落迹南天 | 来源:发表于2018-10-07 21:42 被阅读0次

譬如删除str中的字符a

str.erase( std::remove( str.begin(),  str.end(),  'a' ),  str.end() );

remove 的作用就是删除从 str.begin到str.end()中的字符'a',并且返回一个迭代器。删除是使用前向删除的方式删除的,如下:

template< class ForwardIt, class T >
ForwardIt remove(ForwardIt first, ForwardIt last, const T& value)
{
    first = std::find(first, last, value);
    if (first != last)
        for(ForwardIt i = first; ++i != last; )
            if (!(*i == value))
                *first++ = std::move(*i);
    return first;
}

看懂上面实现之后,如下图,在整个区间删除完字符'a' 的形成的新区间(红色)的下一个位置其实就是迭代器的位置 ,而黑色部分的元素已经被拷贝到前面去了


image.png

所以最后只需要erase释放掉这部分就好了。

参考

  1. remove的实现
  2. 删除string中某个特定的字符

相关文章

网友评论

      本文标题:删除std::string中的特定的字符

      本文链接:https://www.haomeiwen.com/subject/mpsraftx.html