C++技术之路:list的应用

list的结构与vector、deque完全不同,list对象提供了头尾指针,分别指向前后元素。因此list与vector和deuqe不同,比如:
  1.list不支持随机访问,访问元素的效率较低;
  2.执行元素的插入和移除都很快,始终是常量时间内完成,因为无需移动任何元素;
  3.安插和删除的操作不会因此指向其他元素的指针、引用、迭代器失效;
  4.list对异常的控制要么成功,要么什么都不发生。

下面上具体代码:

template< typename D>
class CStlExList
{
public:
	CStlExList() {
	 
	}
	virtual ~CStlExList() { this->XTTClear(); }

public:
	D* XTTAddItem( bool isback=true )
	{
		D *pItem = new D();

		if(!pItem)
			return 0;
		if( isback )
			m_XTTList.push_back( pItem );
		else
			m_XTTList.push_front( pItem );
		return pItem;
	}
	D *XTTPopFront()
	{
		if( m_XTTList.empty() )
			return 0;
		D*pItem = m_XTTList.front();
		m_XTTList.pop_front();
		return pItem;
	}
	void XTTClear()
	{
		typename StlContainerList::iterator it = m_XTTList.begin();
		for(;it != m_XTTList.end(); it++)
		{
			D *pItem = *it;
			delete pItem;
		}
		m_XTTList.clear();
	}
	
	void XTTGetAllItem(list<D*> &tList)
	{
		typename StlContainerList::iterator it = m_XTTList.begin();
		for(;it != m_XTTList.end(); it++) {
			tList.push_back( *it );
		}
	}
	int XTTGetTotalCt(){ return m_XTTList.size(); }

protected:
	typedef list<D*> StlContainerList;
	StlContainerList       m_XTTList;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值