STL的应用总结 1:List

  本人新,第一次写博客,如有不对,请各位大佬提出,我将及时改正。。。

  本人根据厂长(老师)的要求整理了如下几点:

List章节:

1)List的定义

list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。

使用list容器之前必须加上<vector>头文件:#include<list>;

list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using namespace std;

3)构造List函数

list<int>a{1,2,3}
list<int>a(n)    //声明一个n个元素的列表,每个元素都是0
list<int>a(n, m)  //声明一个n个元素的列表,每个元素都是m
list<int>a(first, last)  //声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素,first和last是迭代器

2)List的常用函数

1:begin()和end()

通过调用list容器的成员函数begin()得到一个指向容器起始位置的iterator,可以调用list容器的end()函数来得到list末端下一位置

2:push_back()和push_front()

使用list的成员函数push_back和push_front插入一个元素到list中。其中push_back()是从list的末端插入,而push_front()是从list的头部插入。

3:empty()

判断List是否为空。

4:rbegin()和rend()

前者返回逆向链表的第一个元素,即c链表的最后一个数据。后者返回逆向链表的最后一个元素的下一个位置,即c链表的第一个数据再往前的位置。

5:operator=     

重载赋值运算符。

6:clear()

清空list中的所有元素

7:front()和back()

通过front()可以获得list容器中的头部元素,通过back()可以获得list容器的最后一个元素。注意:当list元素为空时,这时候调用front()和back()不会报错。因此在编写程序时,最好先调用empty()函数判断list是否为空,再调用front()和back()函数。

8:pop_back()和pop_front()

使用pop_back()可以删掉尾部第一个元素,pop_front()可以删掉头部第一个元素。注意:list必须不为空,如果当list为空的时候调用pop_back()和pop_front()会使程序崩掉。

9:assign()

.assign(n,num)      将n个num拷贝赋值给链表c。

assign(beg,end)      将[beg,end)区间的元素拷贝赋值给链表c。

10:swap()

交换两个链表。a.swap(b)和swap(a, b),都可以完成a链表和b链表的交换。

11:reverse()

可以实现list的逆置

12:merge()

a.merge(b) 调用结束后b变为空,a中元素包含原来a和b的元素。

13:insert()

在指定位置插入一个或多个元素

14:erase()

删除一个元素或一个区域的元素

15:remove()            

删除链表中匹配num的元素。

 16:remove_if()

 删除条件满足的元素,参数为自定义的回调函数。

17:sort()

将链表排序,默认升序。自定义回调函数实现自定义排序。

18:unique()      

删除相邻的元素

19:unique()      

删除相邻的元素

3)基本操作示例

#include<iostream>
#include<string>
#include<list>
using namespace std;
typedef list<string> LISTSTR;
int _tmain(int argc, _TCHAR* argv[])
{
LISTSTR test;
test.push_back("back");
test.push_back("middle");
test.push_back("front");
cout<<test.front()<<endl;
cout<<*test.begin()<<endl;
cout<<test.back()<<endl;
cout<<*(test.rbegin())<<endl;
test.pop_front();
test.pop_back();
cout<<test.front()<<endl;
return 0;
}

程序运行结果如下:

第一次写并不太好还请见谅。。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值