标准模板库STL之list

一、list:封装链表相关功能

函数功能

功能

push_back

在尾部添加一个结点

pop_back

在尾部删除一个结点

push_front

在头部添加一个结点

pop_front

在头部删除一个结点

clear

 清空所有结点

back

返回尾结点

front

返回头结点

size

返回结点的个数

insert

在中间插入结点

erase

删除中间结点

二、实例

#include<stdio.h>
#include<list>//头文件 
using namespace std;//命名空间 
int main(){
	list<int> lst;//声明 
	lst.push_back(1);//在尾部插入一个结点 
	lst.push_back(2);//在尾部插入一个结点 
	lst.push_front(3); //在头部插入一个结点 
	lst.pop_back();//在尾部删除一个结点 
	return 0;
}

三、链表不能随机访问,只能按顺序链式访问,所以,只能使用迭代器iterator遍历

#include<stdio.h>

#include<list>//头文件 
using namespace std;//命名空间
 
int main(){
	list<int> lst;//声明 
	
	lst.push_back(1);//在尾部插入一个结点 
	lst.push_back(2);//在尾部插入一个结点 
	lst.push_front(3); //在头部插入一个结点 
	lst.pop_back();//在尾部删除一个结点 
	
	//迭代器遍历 
	list<int>::iterator iter;
	for(iter=lst.begin();iter!=lst.end();iter++){
		int& value=*iter;
		printf("%d ",value);
	}
	return 0;
}

四、list比vector更适合插入删除操作

list链表中插入/删除一个节点

(1)遍历list,找到目标位置

(2)调用insert/erase,插入/删除一个节点

#include<stdio.h>

#include<list>
using namespace std;

int main(){
	list<int> lst;//声明
	
	lst.push_back(1); 
	lst.push_back(3); 
	lst.push_back(5); 
	lst.push_back(7); 
	lst.push_back(9); 

	//删除值为3的节点 
	list<int>::iterator iter;
	for(iter=lst.begin();iter!=lst.end();iter++){
		int& value=*iter;
		if(value==5){
			lst.erase(iter);//迭代器指向这个节点 
			break;
		} 
	printf("%d ",value);//1 3
	}
	return 0;
} 

五、重要性

vector可有可无,但lsi必不可少。

vector不常用到,使用普通的数组完全没有问题。list经常用到,如果没有list,那么每个链表都需要从头写起,十分麻烦。

猜你喜欢

转载自blog.csdn.net/zhao2chen3/article/details/85008729