C++模板元编程的运用

今天把项目里的一个STL容器替换掉,并不是因为效率问题。

现在可以把这个东西分享一下:

template <class Element, INT32 N>
struct ElementArr{
	struct ArrInside{
		Element ele;
		BOOLEAN isVaild;

		void Clear(){
			isVaild = FALSE;
		}
	};

	ArrInside m_Arr[N];
	INT32	m_CurSize;

	INT32	GetMaxSize(){
		return N;
	}

	INT32	AddElement(Element element){
		if (m_CurSize == N){
			return eNormal;
		}

		for (INT32 i = 0; i < N; ++i){
			if (FALSE == m_Arr[i].isVaild){
				m_Arr[i].ele = element;
				m_Arr[i].isVaild = TRUE;
				++m_CurSize;
				break;
			}
		}

		return eNormal;
	}

	BOOLEAN	IsHvElement(Element element){
		if (m_CurSize == 0){
			return FALSE;
		}

		for (INT32 i = 0; i < N; ++i){
			if (TRUE == m_Arr[i].isVaild && m_Arr[i].ele == element){
				return TRUE;
			}
		}

		return FALSE;
	}

	INT32	RemoveElement(Element element){
		if (m_CurSize == 0){
			return eNormal;
		}

		for (INT32 i = 0; i < N; ++i){
			if (m_Arr[i].isVaild && m_Arr[i].ele == element){
				m_Arr[i].isVaild = FALSE;
				--m_CurSize;
				break;
			}
		}

		return eNormal;
	}

	INT32	GetCurSize(){
		return m_CurSize;
	}

	VOID	Clear(){
		for (INT32 i = 0; i < N; ++i){
			m_Arr[i].Clear();
		}

		m_CurSize = 0;
	}
};

还是挺好用,但是挺丑

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值