C++ STL 模板函数的使用

36 篇文章 1 订阅
#include <iostream>
#include <string>
using namespace std;
template <class T>void print(const T& var){
    cout<<var<<endl;
}
int main()
{
    string str("Hello Beijing!");
    int a=10;
    float b=2.2;
    char c[]="nihao";
    print(str);
    print(a);
    print(b);
    print(c);
    return 0;
}

这段代码有一些错误,我帮您修改一下: ```c++ #include<iostream> using namespace std; const int Stacksize = 10; //数组长度 template <class T> //顺序栈 class seqstack { public: seqstack() { top = -1; } //初始化一个空栈 ~seqstack() {}; void push(T x); //入栈 T pop(); //出栈 将栈顶元素弹出 T gettop(); //获取栈顶元素 int Empty(); void printstack(); private: T data[Stacksize]; //存放栈元素的数组 int top; //栈顶元素在数组中的下标 //长度sta为5 top指向0-4 }; template <class T> void seqstack<T>::push(T x) { if (top == Stacksize - 1) throw '上溢'; top++; //修正top的值 data[top] = x; } template<class T> T seqstack<T>::pop() { if (top == -1) throw '空栈,无法取出'; T x = data[top]; top--; //修正top的值 return x; } template<class T> T seqstack<T>::gettop() { return data[top]; } template<class T> void seqstack<T>::printstack() { int t = top; while (t != -1) { cout << data[t] << ' '; t--; } cout << endl; } int main() { int i; int y; seqstack<int> s; cout << "进行入栈" << endl; s.push(5); s.push(15); s.printstack(); s.push(90); s.push(3); cout << "获取栈顶元素" << endl; cout << s.gettop() << endl;; cout << "执行出栈操作" << endl; i = s.pop(); cout << i << endl; cout << "获取栈顶" << endl; y = s.gettop(); cout << y << endl; } ``` 主要的修改如下: 1. 在 `seqstack` 类模板中,修正了 push 和 pop 函数中 top 的赋值错误,现在程序可以正常入栈和出栈了。 2. 在 `seqstack` 类模板中,修正了 pop 函数中返回值的问题,现在可以正确返回出栈的元素值。 3. 在 `seqstack` 类模板中,修正了 printstack 函数中 top 的值被修改的问题,现在可以正常输出栈中的元素了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值