⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgtemplate.h

📁 简单报文模拟发送
💻 H
字号:
#pragma once
#include <vector>
#include <algorithm>
#include <functional>
#include "MsgHeader.h"
using namespace std;

//template<typename S>
//bool pri_order(const MsgHeader* s1,const MsgHeader* s2)
//{
//	return (s1->GetMsgID())<(s2->GetMsgID());
//}


template<class T>
class MsgTemplate
{
public:
	MsgTemplate(void);
	~MsgTemplate(void);
private:
	vector<T> customVector;
public:
	char* toString(char**);
	void addElement(T t);
	void vec_sort(){
		//vector::iterator p=customVector
		sort(customVector.begin(),customVector.end(),greater<T>());//此处使用系统的比较函数,比较功能可以实现
	}
	///编写自定义的比较函数时编译器总是报错,原因未知~~~~~
	/*bool pri_order(const T &s1,const T &s2){
		return (s1->GetMsgID())<(s2->GetMsgID());
	}*/
};
template<class T>
MsgTemplate<T>::MsgTemplate()
{
}
template<class T>
MsgTemplate<T>::~MsgTemplate()///模版类的析构函数,对容器内部指针进行遍历,释放指针的空间
{
	for(vector<T>::iterator ite=customVector.begin();ite!=customVector.end();++ite)
	{

		T t=(T)*ite;
		delete t;
	}
	customVector.clear();
}
template<class T>
void MsgTemplate<T>::addElement(T t)
{
	customVector.push_back(t);
}
template<class T>
char* MsgTemplate<T>::toString(char** p)
{
	
	for(vector<T>::iterator ite=customVector.begin();ite!=customVector.end();++ite)
	{
		char* str=NULL;
		(*ite)->toString(&str);
		if(NULL==*p)
		{
			*p=str;
		}else
		{
			char* temp=*p;
			*p=new char[strlen(temp)+1+strlen(str)+1];
			if(NULL!=*p)
			{
				strcpy(*p,temp);
				strcat(*p,str);
			}
			delete[] temp;
			delete[] str;
		}
	}
	return *p;
}

//template<class T>
//bool MsgTemplate<T>::pri_order(const T &s1,const T &s2)
//{
//	return true;//(s1->GetMsgID())<(s2->GetMsgID());
//}

//template<class T>
//void MsgTemplate<T>::vec_sort()
//{
//	sort(customVector.begin(),customVector.end(),&MsgTemplate::pri_order);
//}

⌨️ 快捷键说明

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