首页 > 编程语言 > 详细

【C++】顺序容器list

时间:2021-04-05 12:27:07      阅读:23      评论:0      收藏:0      [点我收藏+]

list

list是顺序容器中的一种,同vector相比,vector是顺序表的顺序存储方式,而list是顺序表的链式存储结构。


一、STL中List特点:

        1.循环双链表结构
        2.具有一个尾结点,满足STL左闭右开的原则
        3.与vector不同,对于list的迭代器而言,不再是简单数据类型的指针,因为list中每个Node所在的内存并不要求连续,对于迭代器的++,--等操作,并不是地址的++,--操作,而是需要切到下一个节点所在的地址。
        4.插入和删除list需要的时间复杂度是O(1),并且不像vector一样,因为内存重新分配而导致迭代器失效。
技术分享图片

二、list的常用API

API 功能
assign() 给list赋值
back() 返回最后一个元素
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
empty() 如果list是空的则返回true
end() 返回末尾的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回list的配置器
insert() 插入一个元素到list中
max_size() 返回list能容纳的最大元素数量
merge() 合并两个list
pop_back() 删除最后一个元素
pop_front() 删除第一个元素
push_back() 在list的末尾添加一个元素
push_front() 在list的头部添加一个元素
rbegin() 返回指向第一个元素的逆向迭代器
remove() 从list删除元素
remove_if() 按指定条件删除元素
rend() 指向list末尾的逆向迭代器
resize() 改变list的大小
reverse() 把list的元素倒转
size() 返回list中的元素个数
sort() 给list排序
splice() 合并两个list
swap() 交换两个list
unique() 删除list中重复的元素

三、构造方式

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

四、正序遍历和逆序遍历

#include<iostream>
#include <list>
using namespace  std;


int main()
{
	list<int>lst1;           //创建空list
	list<int> lst2(5);       //创建含有5个元素的list
	list<int>lst3(3, 2);      //创建含有3个元素的list,并初始化为2
	list<int>lst4(lst2);     //使用lst2初始化lst4
	list<int>lst5(lst2.begin(), lst2.end());  //同lst4
	lst2.push_back(1);
	lst2.push_back(2);
	lst2.push_back(3);
	lst2.push_back(4);
	lst2.push_front(5);
	cout << "list2 size: " << lst2.size() << endl;  //在原有五个元素的基础上又新增了五个元素
	for (list <int> ::iterator it = lst3.begin(); it != lst3.end(); it++)
		cout << *it << endl;
	for (list<int>::reverse_iterator it = lst2.rbegin(); it != lst2.rend(); it++)
		cout << *it << endl;
	system("pause");

	return 0;
}

五、记录

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

【C++】顺序容器list

原文:https://www.cnblogs.com/Raowz/p/14617880.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!