C++面试八股-STL(List)

一、简介

List是STL里面的双向链表,相比于vector内存连续,list容器内部的元素之间的物理地址不一定是排列在一起的,符合链表的使用场景及特点。

二、链表结点结构体 

既然是双向链表,就表示一个结点里面既保存了指向下一个结点的指针,也保存了指向上一个结点的指针,所以其结点结构体应该如下:

template<typename T>
struct MyListNode
{
	MyListNode() {};

	MyListNode(T val, MyListNode<T>* prev = nullptr, MyListNode<T>* next = nullptr)
		: _val(val)
		, _prev(prev)
		, _next(next)
	{};

	MyListNode<T>* _prev;
	MyListNode<T>* _next;
	T _val;
};
三、迭代器类

包含该双向链表结点的前向迭代器类实现如下:

template<typename T, typename Ref = T&, typename Ptr = T*>
class ListIterator
{
public:
	typedef MyListNode<T> Node;
	typedef ListIterator<T, Ref, Ptr> iterator;

	ListIterator(Node* node)
		: _
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值