STL--list

概念:list提供了一种双向链表,可以快速的插入,删除。但是随机访问较慢

头文件://#inlclude<list>

定义与初始化

list<int>lst1;          //创建空list
list<int> lst2(n);       //创建含有n个元素的list
list<int>lst3(lst2);    //使用lst2初始化lst3
list<int>lst5(lst2.begin(),lst2.end());  //同lst3

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、resize()
//调用resize(n)将list的长度改为只容纳n个元素,超出的元素将被删除。
//如果n比list原来的长度长,那么默认超出的部分元素置为0。也可以用resize(n, m)的方式将超出的部分赋值为m。
例如:
list<int>b{1, 2, 3, 4};
b.resize(2);
list中输出元素:1,2
list<int>b{1, 2, 3, 4};
b.resize(6);
list中输出元素:1,2,3,4,0,0
list<int>b{1, 2, 3, 4};
b.resize(6,9);
list中输出元素:1,2,3,4,9,9

5、clear()//清空list中的所有元素

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

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

8、assign()//有两种使用情况:
(1)a.assign(n, val):将a中的所有元素替换成n个val元素
例如:
list<int>b{1,2,3,4,5};
b.assign(5,10);
b中的元素变为10, 10, 10, 10, 10

(2)a.assign(b.begin(), b.end())
list<int>a{6,7,8,9};
list<int>b{1,2,3,4,5};
b.assign(a.begin(),a.end());
b中的元素变为6,7,8,9

9、swap()
//交换两个链表。a.swap(b)和swap(a, b),都可以完成a链表和b链表的交换。
例子:
list<int>a{6,7,8,9};
list<int>b{1,2,3,4,5};
swap(a, b);  //或a.swap(b)
a中元素变为1,2,3,4,5
b中元素变为6,7,8,9

10、reverse()//可以实现list的逆置
例子:
list<int>b{1,2,3,4,5};
reverse(b.begin(),b.end());
b中元素变为5,4,3,2,1

11、merge()
//a.merge(b) 调用结束后b变为空,a中元素包含原来a和b的元素。
例子:
list<int>a{6,7,8,9};
list<int>b{2, 1, 3, 6, 5};
a.merge(b,greater<int>());
a中元素变为:6,7,8,9,2,1,3,6,5

list<int>a{6,7,8,9};
list<int>b{2, 1, 3, 6, 5};
a.merge(b);
a中元素变为:2,1,3,6,5,6,7,8,9

12、insert()//在指定位置插入一个或多个元素
a.insert(a.begin(),100);  //在a的开始位置(即头部)插入100
a.insert(a.begin(),2, 100);   //在a的开始位置插入2个100
a.insert(a.begin(),b.begin(), b.end());//在a的开始位置插入b从开始到结束的所有位置的元素

13、erase()//删除一个元素或一个区域的元素
a.erase(a.begin());  //将a的第一个元素删除
a.erase(a.begin(),a.end());  //将a的从begin()到end()之间的元素删除。

14、remove()函数//从list中删除元素
list<int>a{6,7,8,9,7,10};
a.remove(7);

引用参考:
【stl list详解】](https://blog.csdn.net/xiaoquantouer/article/details/70339869)

全部评论

相关推荐

程序员鼠鼠_春招版:都很烂大街,rpc也基本没人问,考研吧,不然就包装一段实习再去
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了问题或提升了什么性能指标来写会好些,如使用布隆过滤器实现了判断短链接是否存在,大大提升了查询速度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务