社交型网站开发,网站页面布局图片,网站页面架构图,wordpress邀请码注册功能实现任意类型序列中元素的反序所涉知识点示例代码开发环境运行结果注意所涉知识点 
阅读此文需要掌握的知识点#xff1a;回调函数#xff0c;模板类#xff0c;类模板#xff0c;栈。 
示例代码 
这里直接上代码。 
#pragma once
#include Stack
using namespace …
实现任意类型序列中元素的反序所涉知识点示例代码开发环境运行结果注意所涉知识点 
阅读此文需要掌握的知识点回调函数模板类类模板栈。 
示例代码 
这里直接上代码。 
#pragma once
#include Stack
using namespace std;typedef void(*PRINTSTACK)(void *);templatetypename T
class ReverseArray
{
public:ReverseArray();~ReverseArray();void pushStack(T data);T getTopStack();void popStack();int getSizeStack();void printStack(void * data, PRINTSTACK print);
private:stackT m_stack;
};templatetypename T
inline ReverseArrayT::ReverseArray()
{
}templatetypename T
inline ReverseArrayT::~ReverseArray()
{
}templatetypename T
inline void ReverseArrayT::pushStack(T data)
{m_stack.push(data);
}templatetypename T
inline T ReverseArrayT::getTopStack()
{return T(m_stack.top());
}templatetypename T
inline void ReverseArrayT::popStack()
{m_stack.pop();
}templatetypename T
inline int ReverseArrayT::getSizeStack()
{return m_stack.size();
}templatetypename T
inline void ReverseArrayT::printStack(void* data,PRINTSTACK print)
{print(data);
} 
main.cpp 
#include iostream
#include string
#include ReverseArray.h
using namespace std;#define CHAR_SIZE 5
#define STRING_SIZE 7
/*
描述反转数组任意类型
*/typedef struct PERSON 
{int age;char name[64];
}Person;void myPrint(void *data)
{Person *p  (Person*)data;cout  age;  p-age   name:  p-name  endl;
}void printString(void * data) 
{string str  *((string*)data);cout  str  endl;
}void printChar(void * data) 
{char c  *((char*)data);cout  c  endl;
}void test()
{ReverseArrayPerson *pStack  new ReverseArrayPerson;Person p1  { 3,hudf};Person p2  { 5,akso};Person p3  { 7,及家属的 };Person p4  { 8,口袋};Person p5  { 8,husdh};pStack-pushStack(p1);pStack-pushStack(p2);pStack-pushStack(p3);pStack-pushStack(p4);pStack-pushStack(p5);while (pStack-getSizeStack()  0){Person data  pStack-getTopStack();pStack-printStack((void *)data,myPrint);pStack-popStack();//进出栈操作的是栈顶}cout  string array  endl;ReverseArraystring *pStringStack  new ReverseArraystring;string array[]  { tyu,hello,start,wei,come,waht,world};string newArray[STRING_SIZE];
//	cout  array-size()  endl;//这里取第一个字符串中元素的个数for (size_t i  0; i  STRING_SIZE; i){pStringStack-pushStack(array[i]);}cout  stack size:  pStringStack-getSizeStack()  endl;int i  0;while (pStringStack-getSizeStack()  0){string data  pStringStack-getTopStack();pStringStack-printStack((void *)data, printString);newArray[i]  data;pStringStack-popStack();//进出栈操作的是栈顶i;}cout  print newArray  endl;for (int i  0; i  STRING_SIZE; i){cout  newArray[i]  ;}cout  endl;cout  char array  endl;ReverseArraychar *pCharStack  new ReverseArraychar;char charArray[]  {a,b,c,d,e};char newCharArray[CHAR_SIZE];for (size_t i  0; i  CHAR_SIZE; i){pCharStack-pushStack(charArray[i]);}cout  stack size:  pCharStack-getSizeStack()  endl;int n  0;while (pCharStack-getSizeStack()  0){char data  pCharStack-getTopStack();pCharStack-printStack((void *)data, printChar);newCharArray[n]  data;pCharStack-popStack();//进出栈操作的是栈顶n;}cout  print newCharArray  endl;for (int i  0; i  CHAR_SIZE; i){cout  newCharArray[i]   ;}cout  endl;}
int main()
{test();return 0; 
}// 运行程序: Ctrl  F5 或调试 “开始执行(不调试)”菜单
// 调试程序: F5 或调试 “开始调试”菜单// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”“添加新项”以创建新的代码文件或转到“项目”“添加现有项”以将现有代码文件添加到项目
//   6. 将来若要再次打开此项目请转到“文件”“打开”“项目”并选择 .sln 文件 
开发环境 
vs2017控制台输出程序。 
运行结果 注意 
类模板的使用需要将类的声明与定义放在.h文件中因为模板本身是一种不确定的类型编译器在编译的时候需要在.h文件中去找模板中相应的定义。