2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Cтек в Си++.
Сообщение08.12.2011, 21:40 
Здравствуйте, участники форума..Вот я полностью "проспал" лекции по программированию на плюсах, поэтому имеются большие проблемы с практикой((..Например, вот, что такое шаблон и "с чем его едят"..Например вот такая задача : у меня есть шаблон стека. Код
Код:
template <class Type>
class Stack {
  private :
    Type *mem, *top;
    int size;
  public :
    //конструктор и деструктор
    Stack (int maxsize = DEFAULT_SIZE){
      mem = new Type(maxsize);
      top = mem + maxsize;
      size = 0;
    }
    ~Stack (){delete [] mem;}
   
    //методы работы со стеком
    int Push(Type value){return (top != mem) ? *(--top) = value, ++size, 0 : 1;}
   
    int Pop(Type &dst) {return (size) ? dst = *(top++), --size, 0 : 1;}
     
    int Del(){return (size) ? ++top, --size, 0 : 1;}
   
    Type & Top() { return *top;}
   
    int Empty() {return size == 0;}
   
    int Room() {return top - mem;}
   
    int Success() {return (mem) ? 1 : 0;}
   
};

Как мне реализовать,имея шаблон, стек для строк, целых чисел, файловый стек строк? Спасибо заранее.

P.S. Я вообще ни капельки не программист и тем более еще отстал в Си++, поэтому заранее извиняюсь за глупые вопросы и упорное не замечание очевидных вещей)

 
 
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:46 
3.14 в сообщении #513181 писал(а):
файловый стек строк
Никак.

3.14 в сообщении #513181 писал(а):
для строк, целых чисел
Stack<string>, Stack<int>.

 
 
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:49 
Код:
Stack<string>, Stack<int>.
где это должно быть :oops: ?

 
 
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:52 
Вроде, всё выглядит нормально, за исключением выделения памяти. Должно быть:
Код:
mem = new Type[maxsize];

 
 
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:57 
3.14 в сообщении #513189 писал(а):
где это должно быть :oops: ?
Это типы. Где используют типы, там и должно: в описаниях-объявлениях переменных, аргументов, возвращаемого типа функций, полей структур и классов. Наверно, ещё что-то забыл.

 
 
 
 Re: Cтек в Си++.
Сообщение12.12.2011, 18:59 
3.14 в сообщении #513189 писал(а):
где это должно быть :oops: ?

Если вы спрашиваете, как пользоваться шаблонами, вот из Википедии
Цитата:
Пример использования

Простейшим примером служит определение минимума из двух величин.

Если a меньше b то вернуть а, иначе - вернуть b

В отсутствие шаблонов программисту приходится писать отдельные функции для каждого используемого типа данных. Хотя многие языки программирования определяют встроенную функцию минимума для элементарных типов (таких как целые и вещественные числа), такая функция может понадобится и для сложных (например «время» или «строка») и очень сложных («игрок» в онлайн-игре) объектов.

Так выглядит шаблон функции определения минимума:
Код:
template< typename T >
T min( T a, T b )
{
  return a < b ? a : b;
}


Для вызова этой функции можно просто использовать её имя:
Код:
min( 1, 2 );
min( 'a', 'b' );
min( string( "abc" ), string( "cde" ) );



С уважением,

 
 
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 05:44 
2hurtsy
Увы, ваше последнее сообщение ТС мало поможет -- вы-то привели пример для шаблонов функций, а не классов; но это совершенно разные вещи.

Вообще странно, что ТС, сумев написать целый шаблонный класс затрудняется при этом воспользоваться оным. :) Что-то здесь не так.

 
 
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 13:59 
Circiter в сообщении #514983 писал(а):
вы-то привели пример для шаблонов функций, а не классов

Спасибо, понял. Меня все время манит к себе "вольница" машинных кодов. Все течет, меняется. Программы, стандартные программы,подпрограммы, функции, процедуры, структуры, классы, шаблоны,объекты, экземпляры. Мне кажется, что граф из перечисленных и пропущенных элементов не очень древовидный. А тут я пытался сдвинуть тему с "мертвой точки".

С уважением.

 
 
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 15:26 

(Оффтоп)

hurtsy в сообщении #515067 писал(а):
Спасибо, понял. Меня все время манит к себе "вольница" машинных кодов. Все течет, меняется. Программы, стандартные программы,подпрограммы, функции, процедуры, структуры, классы, шаблоны,объекты, экземпляры. Мне кажется, что граф из перечисленных и пропущенных элементов не очень древовидный. А тут я пытался сдвинуть тему с "мертвой точки".
У вас точно всё в порядке?..

 
 
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 17:53 

(Оффтоп)

arseniiv в сообщении #515085 писал(а):
У вас точно всё в порядке?..

Неа. У нас динамическое равновесие всего порядка со всем непорядком. С уважением.

 
 
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 18:47 

(Оффтоп)

Дело в том, что ваши сообщения трудновато читать; о понимании же их я вообще молчу.

 
 
 
 Re: Cтек в Си++.
Сообщение23.12.2011, 17:03 
Здравствуйте, участники форума. Я думаю код скопирован из Валединского. Я правильно думаю ТС? :evil:

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group