iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么通过模板实现元素的反序
  • 592
分享到

C++怎么通过模板实现元素的反序

2023-07-02 13:07:40 592人浏览 独家记忆
摘要

这篇文章主要介绍“c++怎么通过模板实现元素的反序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++怎么通过模板实现元素的反序”文章能帮助大家解决问题。模板概念首先模板分为函数模板和类模板想到模板

这篇文章主要介绍“c++怎么通过模板实现元素的反序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++怎么通过模板实现元素的反序”文章能帮助大家解决问题。

模板概念

首先模板分为函数模板和类模板

想到模板,就会联想到泛型编程

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

网图:

C++怎么通过模板实现元素的反序

在之前,我们已经知道了函数重载

还是那一个例子 Swap函数交换 int double char

哪怕是函数重载,我们也要写三个,但是如果有了模板,我们只需要:

C++怎么通过模板实现元素的反序

告诉编译器一个模板,让编译器根据不同的类型利用该模板来生成代码

示例代码

这里直接上代码。

#pragma once#include <Stack>using namespace std;typedef void(*PRINTSTACK)(void *);template<typename T>class ReverseArray{public:ReverseArray();~ReverseArray();void pushStack(T data);T getTopStack();void popStack();int getSizeStack();void printStack(void * data, PRINTSTACK print);private:stack<T> m_stack;};template<typename T>inline ReverseArray<T>::ReverseArray(){}template<typename T>inline ReverseArray<T>::~ReverseArray(){}template<typename T>inline void ReverseArray<T>::pushStack(T data){m_stack.push(data);}template<typename T>inline T ReverseArray<T>::getTopStack(){return T(m_stack.top());}template<typename T>inline void ReverseArray<T>::popStack(){m_stack.pop();}template<typename T>inline int ReverseArray<T>::getSizeStack(){return m_stack.size();}template<typename T>inline void ReverseArray<T>::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 7typedef 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(){ReverseArray<Person> *pStack = new ReverseArray<Person>;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;ReverseArray<string> *pStringStack = new ReverseArray<string>;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;ReverseArray<char> *pCharStack = new ReverseArray<char>;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控制台输出程序。

运行结果

C++怎么通过模板实现元素的反序

注意

类模板的使用需要将类的声明与定义放在.h文件中,因为模板本身是一种不确定的类型,编译器在编译的时候需要在.h文件中去找模板中相应的定义。

关于“C++怎么通过模板实现元素的反序”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: C++怎么通过模板实现元素的反序

本文链接: https://www.lsjlt.com/news/341965.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++怎么通过模板实现元素的反序
    这篇文章主要介绍“C++怎么通过模板实现元素的反序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++怎么通过模板实现元素的反序”文章能帮助大家解决问题。模板概念首先模板分为函数模板和类模板想到模板...
    99+
    2023-07-02
  • C++详解如何通过模板实现元素的反序
    目录所涉知识点模板概念示例代码开发环境运行结果注意所涉知识点 阅读此文需要掌握的知识点:回调函数,模板类,类模板,栈。 模板概念 首先模板分为函数模板和类模板 想到模板,就会联想到泛...
    99+
    2024-04-02
  • C#中通过反射将枚举元素加载到ComboBo的实现方法
    目录一、前言二、思路三、上代码一、前言        做过系统参数设置的同学们,肯定遇到过要提供一系列具有相同特点的选项供用户选择。最初级的做...
    99+
    2024-04-02
  • C++委托和消息反馈模板怎么实现
    本篇内容介绍了“C++委托和消息反馈模板怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!继承+多态乍一看是理所当然的选择,库中的类把响...
    99+
    2023-06-17
  • 模板类与模板函数序列化和反序列化的实现方式?
    模板类和模板函数的序列化和反序列化可以通过多种方式实现,包括使用二进制归档、自有序列化、函数指针和函数对象。使用二进制归档可将模板类直接写入/读取到文件,自有序列化则定义自定义序列化/反...
    99+
    2024-04-24
    模板函数 模板类 c++
  • c++指针怎么实现数组元素排序
    在C++中,可以通过指针来实现数组元素的排序。以下是一种使用指针的方法来对数组进行排序的示例代码: #include <ios...
    99+
    2024-04-02
  • 怎么通过display或visibility实现HTML元素的显示与隐藏
    本篇内容介绍了“怎么通过display或visibility实现HTML元素的显示与隐藏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2024-04-02
  • C语言模拟实现通讯录程序过程
    目录一、前言二、正文1.大体框架2.界面显示3. 创建通讯录4.初始化通讯录5.增加联系人6.显示联系人7. 删除联系人8.查找联系人9.修改联系人10. 排序联系人一、前言 在上一...
    99+
    2023-02-14
    C语言模拟实现通讯录 C语言模拟通讯录 C语言通讯录
  • vue3中通过ref获取元素节点的实现
    目录通过ref获取元素节点获取ref元素的几种方式小结1. 原生js获取dom元素2. ref获取单个dom元素3. ref获取v-for循环中的dom元素4. 在swiper中获取...
    99+
    2024-04-02
  • Python怎么实现单链表中元素的反转
    这篇文章主要介绍了Python怎么实现单链表中元素的反转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现单链表中元素的反转文章都会有所收获,下面我们一起来看看吧。给定一个单链表,将其反转。其实...
    99+
    2023-06-30
  • Django模板中怎么实现过滤器
    这篇文章主要介绍了Django模板中怎么实现过滤器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。模版常用过滤器在模版中,有时候需要对一些数据进行处理以后才能使用。一般在Pyt...
    99+
    2023-06-15
  • Ajax中怎么实现一个通用模板
    Ajax中怎么实现一个通用模板,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:<script type...
    99+
    2024-04-02
  • C++模板怎么实现多态思想
    这篇文章主要介绍了C++模板怎么实现多态思想的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++模板怎么实现多态思想文章都会有所收获,下面我们一起来看看吧。一、模板与多态基础再进一步了解如何用模板来实现多态前,...
    99+
    2023-07-05
  • C++中怎么通过托管程序实现安全管理
    这期内容当中小编将会给大家带来有关C++中怎么通过托管程序实现安全管理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一般,C++托管程序要保护的有核心算法和敏感数据。保护核心算法:用C++开发组件保护敏感...
    99+
    2023-06-17
  • python快速排序怎么实现元素递增
    本篇内容介绍了“python快速排序怎么实现元素递增”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概念快速排序法又称分割交换法,是冒泡排序法...
    99+
    2023-06-30
  • 怎么用vue元素实现动画过渡效果
    本文小编为大家详细介绍“怎么用vue元素实现动画过渡效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用vue元素实现动画过渡效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1 在 vue 中,使用&nb...
    99+
    2023-07-04
  • 怎么在HTML5中通过自定义元素实现播放焦点图动画
    这期内容当中小编将会给大家带来有关怎么在HTML5中通过自定义元素实现播放焦点图动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML代码<div class="parall...
    99+
    2023-06-09
  • C#的即时通信程序怎么实现
    这篇文章主要介绍“C#的即时通信程序怎么实现”,在日常操作中,相信很多人在C#的即时通信程序怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#的即时通信程序怎么实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • 怎么通过css的绝对定位和固定定位来实现HTML元素的居中
    这篇“怎么通过css的绝对定位和固定定位来实现HTML元素的居中”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面...
    99+
    2024-04-02
  • PHP数组打乱顺序后如何通过概率来控制元素的出现顺序?
    php 中按概率控制数组元素出现顺序打乱的方法:打乱数组顺序:使用 shuffle() 函数。分配概率:使用 array_map() 为每个元素分配概率(0-1)。排序加权数组:按概率降...
    99+
    2024-05-02
    打乱顺序 概率控制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作