テンプレートクラスを利用したキュー・クラス(CQue)

   キューを実現するクラスです。


   テンプレートクラスとしているのでキューとして格納できる変数の型はintだろうとCString*だろうと何でも可能。


	CQue<int>	queIntData;
	CString	strData;
	CString	strBuff;
	int	n;

	queIntData.AddData(1);
	queIntData.AddData(2);
	queIntData.AddData(3);
	queIntData.AddData(4);

	while(1)
	{
		if(queIntData.GetData(n) == false);
			break;
		strBuff.Format(" -> %d",n);
		strData += strBuff;
	}
	AfxMessageBox(strData);



#include "afxtempl.h"

template<class VALUE>
class CQue
{
public:
	CQue() {};
	virtual ~CQue() {};

	CList<VALUE,VALUE>	m_lData;


	//Queにデータ追加
	void	AddData(VALUE data)
	{
		m_lData.AddTail(data);
	};


	//Queの先頭にデータ追加
	void	AddPrimeData(VALUE data)
	{
		m_lData.AddHead(data);
	};

	bool	GetData(VALUE& data)
	{
		if(m_lData.GetCount() > 0)
			data = m_lData.RemoveHead();
		else
		{
			data = NULL;
			return	false;
		}
		return	true;
	};

	VALUE	GetData(void)
	{
		VALUE	ret;
		GetData(ret);
		return	ret;
	};


	int		GetSize(void)
	{
		return	m_lData.GetCount();
	};


	bool	RemoveAll(void)
	{
		m_lData.RemoveAll();
	};
};

カテゴリー「VC++ TIPS」 のエントリー