首页 > 其他分享 >17类模板

17类模板

时间:2024-01-16 19:34:11浏览次数:20  
标签:SeqStack const 17 top pstack stack 模板 size

类模板

  • 类成为类名和类型参数的组合
  • 无论是一般类还是模板类,只有调用到的成员函数,才会出现在符号表上。
#pragma once
#include <iostream>
#include <cstring>
using namespace std;

template<typename T>
class SeqStack { //模板名称 + 类型参数列表 = 类名称
private:
	T* _pstack;
	int _top;
	int _size;

	void resize();
public:
	//构造和析构函数名可以不加类型参数列表,其它出现模板的地方都不能省略类型参数列表
	SeqStack<T>(int size = 5);
	SeqStack<T>(const SeqStack<T>& stack);
	~SeqStack<T>();
	SeqStack<T>& operator=(const SeqStack<T>& stack);

	void push(const T& val);
	void pop();
	T top()const;//只读的方法时候设计为常方法
	bool full()const;
	bool empty()const;

	int getlen()const { return _size; }
};
template<typename T>
void SeqStack<T>::resize()
{
	_size *= 2;
	T* tmp = new T[_size];
	for (int i = 0; i < _top; i++)
	{
		tmp[i] = _pstack[i];
	}
	delete[]_pstack;
	_pstack = tmp;
}

template<typename T>
SeqStack<T>::SeqStack<T>(int size)
	: _pstack(new T[size])
	, _size(size)
	, _top(0)
{}

template<typename T>
SeqStack<T>::SeqStack<T>(const SeqStack<T>& stack)
	:_size(stack._size)
	, _top(stack._top)
{
	delete[]_pstack;
	_pstack = new T[_size];
	for (int i = 0; i < _top; i++) {
		_pstack[i] = stack._pstack[i];
	}
}

template<typename T>
SeqStack<T>::~SeqStack<T>()
{
	delete[]_pstack;
	_pstack = nullptr;
}

template<typename T>
SeqStack<T>& SeqStack<T>::operator=(const SeqStack<T>& stack)
{
	if (&stack == this)
	{
		return *this;
	}
	delete[]_pstack;
	_top = stack._top;
	_size = stack._size;
	_pstack = new T[_size];
	for (int i = 0; i < _top; i++) {
		_pstack[i] = stack._pstack[i];
	}
}

template<typename T>
void SeqStack<T>::push(const T& val)
{
	if (full())
	{
		resize();
	}
	_pstack[top++] = val;
}

template<typename T>
void SeqStack<T>::pop()
{
	if (empty())
	{
		return;
	}
	_top--;
}


template<typename T>
T SeqStack<T>::top()const
{
	if (empty())
	{
		return;
	}
	return _pstack[--top];
}

template<typename T>
bool SeqStack<T>::full()const
{
	if (top == _size);
}

template<typename T>
bool SeqStack<T>::empty()const
{
	return(_top == 0);
}

int main()
{
	SeqStack<int> s1;
	cout << s1.getlen() << endl;
	return 0;
}

标签:SeqStack,const,17,top,pstack,stack,模板,size
From: https://www.cnblogs.com/sio2zyh/p/17968393

相关文章

  • Abp vnext FreeSql 生成模板,并提供下载模板接口
    DtoDto设置参考[ExcelImporter(IsLabelingError=true)]publicclassMyDto{ [ImporterHeader(Name="序号")] [ExporterHeader(DisplayName="序号")] publicintId{get;set;}}Controller生成模板[HttpGet("GenerateTemplate")]//[Wr......
  • 仿sina个人轻微博html静态网页模板
    一款最新的仿sina个人微博html静态网页模板(轻博客/轻微博/贴吧主页、qq社交空间主题),模板清新简洁、新颖,包含关注、粉丝、人气、个人资料、文章、视频等。比较适合类似爱装扮空间的女生,二次元动漫、插画绘画等内容的个人轻社交博客的模板主题。 模板主题特色:1......
  • LY1087 [ 20230217 CQYC模拟赛VIII T2 ] 记忆
    我们来看这样一道题:请你维护一个序列\(a\)。1k将所有\(a_i\)变成\(|a_i-k|\)。2lr求\(\sum_{i=l}^{r}a_i\)。\(n,q\le10^5\)。首先我们不难写出一个\(naive\)的代码。#include<iostream>#include<algorithm>#include<cstdio>#include<arra......
  • 算法模板 v1.2.1.20240116
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 16理解函数模板
    理解函数模板模板的意义:对函数类型可以做修改函数模板:boolcompare(Ta,Tb)模板实例化:定义一个模板参数类型,进行一次函数的实例化模板函数:一个函数模板的实例化就是一个模板函数模板类型参数:T模板非类型参数:模板的实参推演:根据实参反推模板参数类型模板的特例化:为函数......
  • 算法模板 v1.1.1
    算法模板编译CF模板#include<bits/stdc++.h>usingnamespacestd;/*====================*/#defineendl"\n"/*====================*/typedeflonglonglnt;/*====================*/voidSolve(void){}/*====================*/intmain(){#ifn......
  • thymeleaf—02—模板
    一、th:fragment模板片段我们可以使用模板,定义一些会经常复用的代码,使用th:fragment定义然后使用th:insert引入这个模板内容,或者使用th:replace进行内容替换;还有一个th:include标签也是引入模板内容,但是这个不推荐了; 除了增加模板,还可以使用th:remove进行模板的删除操作; ......
  • 蓝色时间轴个人博客网页模板代码
    看雪时间轴个人博客模板,女生唯美简洁个人博客静态页面模板,蓝色时间轴个人网页模板,下雪空间个人模板代码1、html页面代码<!doctypehtml><html><head><metacharset="gb2312"><title>看雪时间轴个人博客模板-bokequ.com</title><metaname="keywords"content="蓝色......
  • 20款最好的免费 Bootstrap 后台管理和前端模板
    20款最好的免费Bootstrap后台管理和前端模板 AdminBootstrapTemplatesFreeDownload 1.SBAdmin2Preview | Details&Download2.AdminLitePreview | Details&Download3.DirectorResponsiveAdminTemplateFreePreview | Details&Download4......
  • 10.17
    异常捕捉 publicclassCatchWho{publicstaticvoidmain(String[]args){try{try{thrownewArrayIndexOutOfBoundsException();}catch(ArrayIndexOutOfBoundsExceptione){Syst......