Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
GetHelp
-8 / 60 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
17.07.2014, 08:36  [ТС]     Стек на шаблонах - оцените реализацию
Цитата Сообщение от Хедин Посмотреть сообщение
GetHelp, мое мнение. Сделайте на списках, либо перевыделении памяти (сделал на 15 элементов массив, если пытаемся 16 вписать, выделяется память уже под 20 элементов)
списки я потом отдельно посмотрю, а выделять буферами я вообще не люблю, очень не красиво смотрится имхо... а чем плох мой способ? я не вижу в нем ошибок с точки зрения логики... та ошибка правда так и выскакивает, но это что то где то мне кажется просто на 1 элемент больше удалить пытается или что то в этом роде, надо просто найти где налажал...

Добавлено через 1 минуту
так и есть, поставил изначально count = 0 и стало все норм

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
template <typename T>
class Stack
{
private:
    size_t size;
    size_t count;
    T* data;
public:
    Stack();
    ~Stack();
    void Push(T value);
    T Pop();
};
 
template <typename T>
Stack<T>::Stack()
{
    size = sizeof(T);
    data = new T;
    count = 0;
}
 
template <typename T>
Stack<T>::~Stack()
{
    delete [] (data - size * count);
}
 
template <typename T>
void Stack<T>::Push(T value)
{
    count++;
    data += size;
    data = new T;
    *data = value;
}
 
template <typename T>
T Stack<T>::Pop()
{
    count--;
    T tmp = *data;
    if (count > 0)
    {
        T* ptr = data;
        data -= size;
        delete ptr;
    }
    return tmp;
}
 
Текущее время: 11:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru