C++中list的相关函数及用法(整理)

定义:双向链表

头文件:#include<list>

优点:可以在任何位置快速插入/删除元素,移动元素的速度比其他容器效率高。

缺点:不能通过位下标置访问元素。只能从头或尾遍历容器,直到找到该位置。

创建

创建空list容器:list<int> values;

创建包含n个元素的容器:list<int> values1(n);

创建包含n个元素且赋初值的容器:list<int> values2(n,3);

拷贝已有list容器创建新容器:list<int> values3(values2);

拷贝其它类型容器指定区域内的元素,创建新的list容器:

int a[3]={1,2,3};list<int> values4(a,a+3);

array<int,3> arr{1,2,3};list<int> values5(arr.begin(),arr.end());

迭代器:list<int>::iterator it;

函数

  1. begin():头,values.begin();end():尾的后一个,values.end();
  2. rbegin():尾,values.rbegin();rend():头的前一个,values.rend();
  3. cbegin()、cend()、crbegin()、crend():在原基础上增加const属性,不能用于修改元素;
  4. 判断是否为空,是,返回true:values.empty();
  5. 返回容器实际包含的元素个数:values.size();
  6. 返回容器所包含元素个数的最大值:values.max_size();
  7. front():返回第一个元素的引用,int a=values.front();back():返回最后一个元素的引用,        int a=values.back();
  8. assign():用新元素替换容器中的原有内容,values.assign(元素个数,默认值);
  9. emplace_front():在容器头部生成一个元素,values.emplace_front(e);
  10. push_front():在容器头部插入一个元素,values.push_front();
  11. pop_front():删除容器头部的一个元素,values.pop_front();
  12. emplace_back():容器尾部直接生成一个元素,values.emplace_back(e);
  13. push_back():在尾部增加一个元素,values.push_back(x);  pop_back():删除尾部元素, values.pop_back(x);
  14. emplace():在容器的指定位置插入元素,比insert()效率高,values.emplace(it,e);
  15. insert():在容器的指定位置插入元素,values.insert(values.begin(),e);
  16. erase():删除容器中一个或某区域内的元素,values.erase(it)或values.erase(values.begin(),values.end());
  17. swap():交换两个容器中的元素,必须保证容器中存储的元素类型相同,swap(values,list_temp);
  18. resize():调整容器大小,values.resize(n,E);若n大于values元素的总数,E为默认值;若n小于values元素总数,去掉尾部元素。
  19. clear():删除容器存储的所有元素,values.clear();
  20. splice():将一个list容器中的元素插入到另一个容器的指定位置;

        it=values.begin();

        将list_temp中的数据插入到it指向的位置前:values.splice(it,list_temp);

        将values中it指向的元素插入到list_temp前:temp_list.splice(temp_splice.begin,values,it);

        将values中从头部到it之间的元素插入到尾部之后:

        values.splice(values.begin(),values,it,values.end());

  1. remove(e):删除容器中所有等于e的元素;
  2. remove_if():删除容器中满足条件的元素

        bool isRemove(const int a){return a==2;}

        values.remove_if(isRemove);

unique():删除容器中相邻的重复元素,只保留一个values.unique();

merge():合并两个事先排好序的list容器,合并后的list容器依旧有序,   values.merge(list_temp)。

merge默认使用<,所以两个list容器中内容需要升序排列。如果两个list容器降序排列, 则需要定义:bool cmp(int a,int b){return (a>b)}  values.merge(list_temp,cmp);

sort():通过更改元素中容器的位置,将他们进行排序,values.sort();

reverse():反转容器中元素的顺序,values.reverse();

advance():更改迭代器,advance(it,2):指向list中第三个元素;

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在C++,Sleep函数是Windows API提供的一个函数,用于使当前线程休眠一定的时间。它的原型为:void Sleep(DWORD dwMilliseconds)。其,dwMilliseconds参数表示休眠的时间,单位是毫秒。Sleep函数的作用是暂停当前线程的执行,让其他线程有机会执行。在休眠期间,当前线程不会占用CPU资源,直到休眠时间结束后才会继续执行。\[1\] 因此,Sleep函数C++用法是通过调用Sleep函数并传入休眠时间来使当前线程休眠一段时间。例如,可以使用Sleep(2000)来使当前线程休眠2秒。在休眠期间,当前线程不会执行任何操作,直到休眠时间结束后才会继续执行后续的代码。\[1\] #### 引用[.reference_title] - *1* [C++ Sleep 函数](https://blog.csdn.net/DUXS11/article/details/125892923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C/C++Sleep函数用法(for循环产生的随机数一样解决方法之一)](https://blog.csdn.net/weixin_45676049/article/details/107620591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值