📄 msgtemplate.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 + -