STL容器——list

一:list的特点

1.list中每个元素存放于堆中,可以不连续,通过指针进行数据访问;

2.随机访问效率低下;

3.list没有提供[]操作符的重载;

4.可以在任意位置插入删除,且效率高。

二:list定义与初始化

list<int> lst;//定义int型列表

list<int> lst1(10);//size为10,默认值为0

list<int> lst2(10, 10);//size为10,元素值为10

list<int> lst3 = { 1,2,3,4 };

list<int> lst4{ 1,2,3,4 };

list<int> lst5(lst3);

list<int> lst6 = lst3;

list<int> lst7(lst3.begin(), lst3.end());

三:基本操作

lst3.push_back(1);//尾部插入
lst3.size();//元素个数
lst3.push_front(1);//头部插入
lst3.pop_back();
lst3.pop_front();
lst3.back();
lst3.front();
lst3.insert(lst3.end(), 1);
lst3.insert(lst3.end(), 5, 1);
lst3.insert(lst3.end(), lst4.begin(), lst4.end());
lst3.erase(lst3.begin());
lst3.erase(lst3.begin(), lst3.end());
lst3.assign(2, 3);
lst3.assign(lst4.begin(), lst4.end());
lst3.sort();//排序
lst3.merge(lst4);//合并两个list,并按从小到大排列
lst3.unique();//删除相邻重复元素
lst3.reverse();//反转
lst3.remove(2);//删除元素值
lst3.clear();

四:迭代器

与vector类似,详见前文vector介绍。

五:总结

1.list一般不会预留空间,插入时分配内存,删除时释放内存;

2.插入和删除效率高,不需要移动内存;但是随机访问效率低(指针访问);

3.时间复杂度:访问时间复杂度时O(n);插入时间复杂度:push_front为O(1),push_back为O(1),insert为O(1);删除时间复杂度:pop_front为O(1),pop_back为O(1),erase为O(1)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值