python删除列表元素_追求简单C++之删除STL列表的元素

本文介绍了STL列表中的删除方面。

1.使用list :: erase():此函数的目的是从列表中删除元素。使用此功能可以删除范围内的单个或多个连续元素。该函数有两个参数,开始迭代器和结束迭代器。
2.时间复杂度: O(n)其中(n是列表的大小)。

216523313e8102e021e34d9f311fdf7d.png
#include #include // for list operations using namespace std;   int main() {     list list1={10,15,20,25,30,35};     list::iterator it = list1.begin();     list::iterator it1 = list1.begin();     advance(it,2);     advance(it1,5);           cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;     list1.erase(it);     cout <<    for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;           it = list1.begin();     advance(it,2);     list1.erase(it,it1);     cout <<    for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;         } 

输出:

原始列表是:10 15 20 25 30 35 使用delete()删除1个元素后的列表:10 15 25 30 35 使用delete()删除多个元素后的列表:10 15 35 

2.使用list :: pop_front()和list :: pop_back()

1.pop_back():此函数从列表中删除最后一个元素。这样可以将列表的大小减少1。

时间复杂度:O(1)

2.pop_front():此函数从列表中删除第一个元素,并移动后续元素。这样可以将列表的大小减少1。

时间复杂度:O(1)

#include #includeusing namespace std;   int main() {     list list1={10,15,20,25,30,35};     cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;     list1.pop_front();     cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;     list1.pop_back();      cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;       } 

输出:

原始列表是:10 15 20 25 30 35 使用pop_front()删除第一个元素后的列表:15 20 25 30 35 使用pop_back()删除最后一个元素后的列表:15 20 25 30 

3.使用remove()和remove_if()

1.remove():此函数删除在其参数中传递的值的所有出现。它与“ erase()”的区别在于“ erase()”按位置删除值,而“ remove()”则删除传递的值。列表的大小减少了已删除的出现次数。
时间复杂度:O(n)

2.remove_if():此函数删除将“ true”返回给在其参数中传递的函数的值的出现。
时间复杂度:O(n)

  #include #includeusing namespace std; bool is_div_5(const int& num) { return num%5==0;}    int main() {     list list1={10,14,20,22,30,33,22};     cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;           list1.remove(22);     cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;     list1.remove_if(is_div_5);     cout <<     for (list::iterator i=list1.begin(); i!=list1.end(); i++)        cout << *i << " ";            cout << endl;       } 

输出:

原始列表是:10 14 20 22 30 33 22 删除所有22次出现后的列表:10 14 20 30 33 删除的列表:15的所有倍数之后4 33 

学习更多,以及免费领取学习资料和教程,请点击下方了解更多链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值