singlepost

<template T> << На главную или назад  

Как перевести етот стек в <template T> чтоби можно било вводить string символи и роботать с ними?
#include <iostream>
using namespace std;
class Stack
{
public:
struct stack
{
int el;
struct stack * next;
};//структура stack
stack * poch;
int kilkist;
public:
Stack::Stack()
{
poch=NULL;
}
~Stack()
{
stack * temp;
while (poch!=NULL)
{
temp=poch;
poch=poch->next;
delete temp;
}
}
int first_el_stack()
{
int a = poch->el;
int G=0;
stack * tempPoch = poch;
stack * temp = NULL;
while (tempPoch != NULL)
{
if (tempPoch->el > a)
{
G=G+1;
}
temp = tempPoch;
tempPoch = tempPoch->next;
}
if (poch==NULL){
cout<<endl<<"stek pustyi"<<endl;
return 0;}
else {
stack* temp = poch;
poch=poch->next;
kilkist–;
delete temp;
if (kilkist==0)
poch=NULL;
return G;}
}
bool Stack::isempty() const
{
return kilkist==0;
}
int Stack::kilkist_el () const
{
return kilkist;
}
bool Stack::dobavlennya (const int & a)
{
stack *add = new stack;
if (add == NULL)
return false;
add->el = a;
add->next = poch;
kilkist++;
poch = add;
}
};
void main ()
{
Stack b;
int size;
cout<<"vvedit kilkist chysel:"<<endl;
cin>>size;
for (int i=0; i<size; i++)
{
int a;
cin>>a;
b.dobavlennya (a);
}
for (int i=0; i<size; i++)
{

cout<<b.first_el_stack();
}
cin.get();
cin.get();
}

3 ответов в теме “<template T>”

  1. 3
    Павел Потапов ответил:

    template <class T> class Stack

    И внутри struct stack замени

    int el;

    на

    T el;

    И везде, где компилятор поругается на несоответствие типов, замени int на T.

  2. 2
    Дмитрий Гайдамович ответил:

    АААААА!!! Класс !!!

    kilkist chysel
    poch

    Всегда так будут писать теперь! Спасибо!

  3. 1
    Сергей Смирнов ответил:

    Используй лучше Stack из STL:
    //www.cppreference.com/wiki/stl/stack/start

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.