vstemplatelib.h

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C头文件 代码 · 共 159 行

H
159
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : VSTemplateLib.h// Written by  : excel96// Description : //////////////////////////////////////////////////////////////////////////////#ifndef __VSTEMPLATELIB_H__#define __VSTEMPLATELIB_H__#include <iostream>#include <list>#include <stdlib.h>#include <sys/time.h>#include <time.h>using namespace std;template<class T>class UniqueSet{public:	UniqueSet(unsigned int maxSize=100);	~UniqueSet();public:	unsigned int getMaxSize(void) { return m_MaxSize; }	unsigned int getCurSize(void) { return m_CurSize; }	unsigned int insert(const T value);	unsigned int pick(unsigned int size, list<T>& resultList);	unsigned int pick(unsigned int size, vector<T>& resultVector);protected:	unsigned int	m_MaxSize;	unsigned int	m_CurSize;	T* 				m_pData;};template<class T>UniqueSet<T>::UniqueSet(unsigned int maxSize){	m_pData = new T[maxSize];	m_MaxSize = maxSize;	m_CurSize = 0;}template<class T>UniqueSet<T>::~UniqueSet(){	if (m_pData != NULL)	{		delete [] m_pData;		m_pData = NULL;	}}template<class T>unsigned int UniqueSet<T>::insert(const T value){	if (m_CurSize >= m_MaxSize)	{		cerr << "UniqueSet::insert() : Max Size Exceeded" << endl;		return m_MaxSize + 1;	}	m_pData[m_CurSize] = value;	m_CurSize++;	return m_CurSize;}template<class T>unsigned int UniqueSet<T>::pick(unsigned int size, list<T>& resultList){	// 泅犁 啊瘤绊 乐绰 单捞鸥狼 箭磊啊 夸备等 单捞磐 箭磊焊促 利促搁,	// 啊瘤绊 乐绰 单捞磐 葛滴甫 搬苞 府胶飘俊促 笼绢持绊 府畔茄促.	if (size >= m_CurSize)	{		for (unsigned int i=0; i<m_CurSize; i++)		{			resultList.push_back(m_pData[i]);		}	}	// 酒聪扼搁 泅犁 啊瘤绊 乐绰 单捞鸥 吝狼 老何甫 夸备等 箭磊父怒	// 搬苞 府胶飘俊促 淬酒辑 府畔茄促.	else	{		// 酒贰 舅绊府硫狼 琴缴篮 促澜苞 鞍促.		// N俺狼 单捞鸥啊 乐栏搁 % 楷魂磊甫 烹秦 弊 吝狼 窍唱甫 惶酒辰促.		// 单捞磐甫 搬苞俊 器窃矫淖促搁, 弊 单捞磐客 傈眉 单捞磐 吝狼		// 付瘤阜 单捞磐, 溜 N-1锅狼 单捞磐甫 胶恳茄促. 弊 促澜 N阑 1 临牢促.		// 促矫 % 楷魂磊甫 烹秦 窍唱狼 单捞磐甫 惶绰促. 捞繁 侥栏肺		// 夸备等 父怒狼 unique茄 单捞磐甫 惶酒尘 荐啊 乐促.		int max     = m_CurSize;		int current = 0;		while (current < size)		{			int index = rand()%max;			resultList.push_back(m_pData[index]);			T temp = m_pData[index];			m_pData[index] = m_pData[max-1];			m_pData[max-1] = temp;			max--;			current++;		}	}	return resultList.size();}template<class T>unsigned int UniqueSet<T>::pick(unsigned int size, vector<T>& resultVector){	// 泅犁 啊瘤绊 乐绰 单捞鸥狼 箭磊啊 夸备等 单捞磐 箭磊焊促 利促搁,	// 啊瘤绊 乐绰 单捞磐 葛滴甫 搬苞 府胶飘俊促 笼绢持绊 府畔茄促.	if (size >= m_CurSize)	{		for (unsigned int i=0; i<m_CurSize; i++)		{			resultVector.push_back(m_pData[i]);		}	}	// 酒聪扼搁 泅犁 啊瘤绊 乐绰 单捞鸥 吝狼 老何甫 夸备等 箭磊父怒	// 搬苞 府胶飘俊促 淬酒辑 府畔茄促.	else	{		// 酒贰 舅绊府硫狼 琴缴篮 促澜苞 鞍促.		// N俺狼 单捞鸥啊 乐栏搁 % 楷魂磊甫 烹秦 弊 吝狼 窍唱甫 惶酒辰促.		// 单捞磐甫 搬苞俊 器窃矫淖促搁, 弊 单捞磐客 傈眉 单捞磐 吝狼		// 付瘤阜 单捞磐, 溜 N-1锅狼 单捞磐甫 胶恳茄促. 弊 促澜 N阑 1 临牢促.		// 促矫 % 楷魂磊甫 烹秦 窍唱狼 单捞磐甫 惶绰促. 捞繁 侥栏肺		// 夸备等 父怒狼 unique茄 单捞磐甫 惶酒尘 荐啊 乐促.		int max     = m_CurSize;		int current = 0;		while (current < size)		{			int index = rand()%max;			resultVector.push_back(m_pData[index]);			T temp = m_pData[index];			m_pData[index] = m_pData[max-1];			m_pData[max-1] = temp;			max--;			current++;		}	}	return resultVector.size();}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?