2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Cтек в Си++.
Сообщение08.12.2011, 21:40 


26/08/09
197
Асгард
Здравствуйте, участники форума..Вот я полностью "проспал" лекции по программированию на плюсах, поэтому имеются большие проблемы с практикой((..Например, вот, что такое шаблон и "с чем его едят"..Например вот такая задача : у меня есть шаблон стека. Код
Код:
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 
Заслуженный участник


27/04/09
28128
3.14 в сообщении #513181 писал(а):
файловый стек строк
Никак.

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

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:49 


26/08/09
197
Асгард
Код:
Stack<string>, Stack<int>.
где это должно быть :oops: ?

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:52 
Заслуженный участник


04/05/09
4587
Вроде, всё выглядит нормально, за исключением выделения памяти. Должно быть:
Код:
mem = new Type[maxsize];

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение08.12.2011, 21:57 
Заслуженный участник


27/04/09
28128
3.14 в сообщении #513189 писал(а):
где это должно быть :oops: ?
Это типы. Где используют типы, там и должно: в описаниях-объявлениях переменных, аргументов, возвращаемого типа функций, полей структур и классов. Наверно, ещё что-то забыл.

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение12.12.2011, 18:59 


01/07/08
836
Киев
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 
Заслуженный участник


26/07/09
1559
Алматы
2hurtsy
Увы, ваше последнее сообщение ТС мало поможет -- вы-то привели пример для шаблонов функций, а не классов; но это совершенно разные вещи.

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

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 13:59 


01/07/08
836
Киев
Circiter в сообщении #514983 писал(а):
вы-то привели пример для шаблонов функций, а не классов

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

С уважением.

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 15:26 
Заслуженный участник


27/04/09
28128

(Оффтоп)

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

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 17:53 


01/07/08
836
Киев

(Оффтоп)

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

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

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение13.12.2011, 18:47 
Заслуженный участник


27/04/09
28128

(Оффтоп)

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

 Профиль  
                  
 
 Re: Cтек в Си++.
Сообщение23.12.2011, 17:03 


15/05/11
23
Здравствуйте, участники форума. Я думаю код скопирован из Валединского. Я правильно думаю ТС? :evil:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group