C++中remove()函数总结

您所在的位置:网站首页 turtle绘图体系以水平右侧为绝对方位的零度 C++中remove()函数总结

C++中remove()函数总结

2023-10-03 11:12| 来源: 网络整理| 查看: 265

对于remove函数,首先要明白remove函数的实现原理。首先remove函数在STL中的源代码如下:

template ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val) { ForwardIterator result = first; while (first!=last) { if (!(*first == val)) { *result = move(*first); ++result; } ++first; } return result; }

1.对vector而言

remove的时候只是通过迭代器的指针向前移动来删除,将没有被删除的元素放在链表的前面,并返回一个指向新的超尾值的迭代器。由于remove()函数不是vector成员函数,因此不能调整vector容器的长度。(对vector来说)remove()函数并不是真正的删除,要想真正删除元素则可以使用erase()或者resize()函数。erase()函数可以删除给定区间的元素。它接受两个迭代器参数,这些参数规定了要删除的区间。例如:

要删除第一个元素和第二个元素,代码如下:

score.erase(scores.begin(),score.begin()+2);

例子:

#include #include #include #include using namespace std; int main() { vectorvec; vector::iterator ite; vector::iterator p; vec.push_back('A'); vec.push_back('A'); vec.push_back('A'); vec.push_back('B'); vec.push_back('B'); vec.push_back('B'); vec.push_back('B'); vec.push_back('A'); vec.push_back('A'); vec.push_back('A'); p=remove(vec.begin(),vec.end(),'A'); //p=vec.erase(remove(vec.begin(),vec.end(),'A'),vec.end()); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3