C/C++ STL提供的序列式容器之List

2023-12-16 12:05:00

List 由双向链表实现而成,元素存放在堆中,每个元素都是放在一块内存中。没有空间预留习惯,所以每分配一个元素都会从内存中分配,每删除一个元素都会释放它占用的内存。

特点
?? ?1. 内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供 [] 操作符的重载。(缺点)
?? ?2. 由于链表的特点,在任意位置的插入和删除效率都较高。(优点)
?? ?3. 只支持首尾两个元素的直接存取,想获取其他元素(访问时间一样),则需要遍历链表。(缺点)

总结:不支持随机访问,在任意位置的插入和删除效率都较高。
?

// Len_stl.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

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

int main()
{
	list<int> listTemp;

	for (int i = 0; i < 6; i++)
	{
		listTemp.push_back(i);
	}

	// 从头部出栈
	cout << "\n\n开始从头部出栈" << endl;
	while (!listTemp.empty())
	{
		cout << "listTemp.front()="<<listTemp.front() << " , 长度="<< listTemp.size()<<endl;
		listTemp.pop_front();
	}

	cout<<"长度 = "<< listTemp.size()<<endl;

	// 插入
	cout << "\n\n插入 111,222,333后";
	listTemp.push_back(111);
	listTemp.push_back(222);
	listTemp.push_back(333);
	cout << "长度 = " << listTemp.size() << endl;

	// 从尾部出栈
	cout << "\n\n开始从尾部出栈"<<endl;
	while (!listTemp.empty())
	{
		cout << "listTemp.back()=" << listTemp.back() << " , 长度=" << listTemp.size() << endl;
		listTemp.pop_back();
	}
	cout << "长度 = " << listTemp.size() << endl;

	return 0;

}

执行结果:

文章来源:https://blog.csdn.net/wendyWJGU/article/details/134981345
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。