C++封装一个数组类模板. 数组中可以存任意类型数据.

本文介绍了一个在Ubuntu20.04环境下实现的C++模板类顺序栈,包括Push、Pop等基本操作,并扩展了Search、Insert、Remove功能。通过友元函数实现数据输出,并提供了测试用例展示其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境:Ubuntu20.04

 首先是基于顺序栈的基础上,完成相关操作。

我分别设置了三个文件一个DataStack.cpp文件一个DataStack.h文件一个用于测试的test.cpp文件

其中DataStack.h文件内容如下:

#ifndef _DATASTACK_H
#define _DATASTACK_H
#include <iostream>
using namespace std;

#define STACK_SIZE 20    //栈的默认大小

template <typename T>
class MyStack
{
template <typename U>
friend ostream &operator<< (ostream &out, MyStack<U> &s_stack);
public:
	MyStack();   		 //默认构造函数

	MyStack(int size);   //带参构造

	~MyStack();     	//释放开辟的堆区空间

	void Push(T data);		//入栈

	//T Search(int pos);

	//void Insert(T data, int pos);

	//T Remove(int pos);

	T Pop();			//出栈

private:
	int s_size;		//栈能够容纳的大小
	int s_point;	//当前栈顶指针的位置,-1代表没有元素
	T *s_ptr;
};


//创建一个类,测试存储一个类
class Person
{
friend ostream &operator<<(ostream &out, const Person &per);
public:
	Person();

	Person(string name, int age);

	void SetName(string name);

	void SetAge(int age);
private:
	string p_name;
	int p_age;
};

ostream &operator<<(ostream &out, const Person &per); //显示存储的系统自带的数据类型的数据

template <typename U>
ostream &operator<<(ostream &out, MyStack<U> &s_stack); //显示存储类中的数据

#endif

其中Search、Remove、Insert三个函数是后面添加进来的函数,所以现在先注释掉(因为当前只是用栈来实现相关的内容),后面用到数组存储数据再将这三个函数解开。

DataStack.cpp对头文件的具体实现内容如下:

#include "DataStack.h"

template <typename T>
MyStack<T
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值