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

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;

}

执行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WendyWJGu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值