Форум программистов, компьютерный форум CyberForum.ru

Стек на шаблонах - оцените реализацию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Композиция и иерархия: класс "комната", "квартира" http://www.cyberforum.ru/cpp-beginners/thread1228389.html
(Композиция и иерархия). Создать класс комната, имеющая площадь. Определить конструктор и метод доступа. Создать класс однокомнатная квартира, содержащий комнату и кухню (их площадь), этаж (комната содержится в классе однокомнатная квартира). Определить конструкторы, методы доступа. Определить public-производный класс однокомнатных квартир разных городов (дополнительный параметр – название...
C++ Иерархия: класс "карта", "колода карт" (Иерархия). Создать класс карта, имеющая ранг и масть. Карту можно перевернуть и открыть. Создать класс – колода карт, содержащий карты. Создать два производных класса от колоды карт, в одном карты могут доставаться только по порядку, в другом - вытаскиваться произвольно http://www.cyberforum.ru/cpp-beginners/thread1228388.html
Написать функцию, которая сравнивает два целых числа C++
Написать функцию, которая сравнивает два целых числа и возвращает результат сравнения в виде одного из знаков: < > или =. Это код второй, но не доделал: char f(int a, int b) { if (a>b)return '>'; if (a<b)return '<'; return '='; }
C++ Выделение памяти в куче для строки для реализации длинной арифметики
Доброго времени суток, пишу класс string, на основе которого потом хочу реализовать класс для длинной арифметики. Поэтому мне понадобился такой конструктор: // constructor by integer string::string( const int number, const int base ) { char * buffer = (char *)realloc(NULL, sizeof(char)*sizeof(int)+5); _itoa(number, buffer, base ); length = strlen(buffer); takeMemory( NULL, length );...
C++ В какой последовательности выполняются действия вычисления ошибки исходя из кода http://www.cyberforum.ru/cpp-beginners/thread1228333.html
// A program to implement a calculator accepting parentheses #include <iostream> // For stream input/output #include <cstdlib> // For the exit() function #include <cctype> // For the isdigit() function #include <cstring> // For the strcpy() function using std::cin; using std::cout; using std::endl;
C++ Ошибки линковки при использовании шаблонного класса Есть заголовочной файл Utils.h, в котором определены 2 класса String и ArrayList<T>: class String : public Comparable<String> { private: friend class Object; string data; public: String() {} /**/ ArrayList<String>* split(const String delimiter) const; подробнее

Показать сообщение отдельно
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
17.07.2014, 20:07
Цитата Сообщение от GetHelp Посмотреть сообщение
хотя бы тыкните пальцем что читать
Любую книгу по плюсам, раздел - обработка исключений.
В данном случае реализация будет примерно такая (псевдокод):
C++
1
2
3
4
T& top() {
  if (container_.empty()) throw std::out_of_range("Access to element of empty container");
  return container.back();
}
Цитата Сообщение от GetHelp Посмотреть сообщение
и нехрена не могу в нем понять вообще
Не обязательно лезть в исходники, достаточно почитать доки по интерфейсам (cplusplus.com в помощь)

Оставим только функции pop и top, раз уж о них говорили, и все становится предельно ясно. Для краткости определения синонимов типов тоже удалены, предполагая, что из имена в контексте говорят за себя.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template<class _Ty,
    class _Container = deque<_Ty> >
    class stack
    {   // LIFO queue implemented with a container
public:
    reference top()
        {   // return last element of mutable stack
        return (c.back());
        }
 
    void pop()
        {   // erase last element
        c.pop_back();
        }
 
protected:
    _Container c;   // the underlying container
    };
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru