(顺序容器类)链表应用:一个行编辑器

本文探讨了C++中链表(list)作为顺序容器的特点,包括其不支持随机访问以及在插入和删除操作上的优势,对比了与vector和deque的区别。文章还提到了list可能用到的string类,并暗示将使用链表实现一个行编辑器的头部文件。
摘要由CSDN通过智能技术生成
(list模板类的方法接口:)
list();					// 构造器:链表为空
list(const list<T>& x);	// 拷贝构造器
void push_front(const T& x);	// 将 x 插入到这个链表的开头
void push_back(const T& x);		// 在这个链表尾部插入 x
// 将 x 插入到调用前position所在位置的项的前面。返回位于 x 位置上的迭代器
iterator insert(iterator position, const T& x);
void pop_front();		// 将调用前这个链表开头的项从链表中删除
void pop_back();		// 将调用前这个链表尾部的项从链表中删除
void erase(iterator position);	// 将调用前position位置上的项从链表中删除
// 将调用前所有位于 first(包括first) 和 last(不包括last) 之间的项从链表中删除
void erase(iterator first, iterator last);
unsigned size() const;	// 返回这个链表中项的数量
bool empty() const;		// 链表为空 ? true : false
iterator begin();		// 返回位于这个链表开头的迭代器
iterator end();			// 返回位于这个链表末尾的迭代器
list<T>& operator=(const list<T>& x);	// 重载赋值运算符
// 从position位置开始将 x 的内容插入这个链表,然后 x 为空
void splice(iterator position, list<T>& x);
void sort();			// 这个链表中的项按照升序排列
(迭代器接口:)
iterator& operator++();		// ++iter;
iterator& operator++(int);	// iter++;
iterator& operator--();		// --iter;
iterator& operator--(int);	// iter--;
T& operator*();				// *iter;
bool operator==(const iterator& x);
bool operator!=(const iterator& x);

1)list中没有 operator[],意味着list缺少随机访问属性;

2)  list中的插入与删除操作没有项的移动,而vector与deque中插入与删除可能导致许多项的移动;

list模板类可能的字段:

template <class T>
class list
{
protected:
	unsigned length;
	struct list_node
	{
		T data;			// 项
		list_node *next;// 指向下一项
		list_node *prev;// 指向前一项
	};
	list_node *node;	// 头节点
public:
	class iterator
	{
	protected:
		list_node *node;
		iterator(list_node *x): node(x) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值