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

realloc - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу определения минимального среди 5 введенных целых чисел. http://www.cyberforum.ru/cpp-beginners/thread288292.html
Плз помогите составить текст программы,на Си Обход. Составить программу определения минимального среди 5 введенных целых чисел.
C++ Перегрузка виртуальных функций please HELP! перегружаю виртуальную функцию в абстрактном классе. class ONE { virtual std::string FUN(const std::string& value); virtual ~ONE(); } http://www.cyberforum.ru/cpp-beginners/thread288286.html
Массивы и указатели C++
Здравствуйте! Задача по теме указатели.Есть 2 массива размер которого получаем от пользователя. Написать функцию которая получает 2 массива и создает третий массив, размером первый + второй. В main...
C++ Структуры
Сформировать массив, содержащий сведения о количестве изделий категорий A,B,C, собранных рабочим за месяц. Структурный тип содержит поля: фамилия сборщика, наименование цеха, количество изделий по...
C++ Постфиксный, и префиксный экземпляры оператора приращения: в чем разница? http://www.cyberforum.ru/cpp-beginners/thread288254.html
постфиксный, и префиксный экземпляры оператора приращения в чем разница? i++ ++i ??
C++ Добавить элементы в очередь, найти максимальный элемент Нужна Ваша помощь! пожалуйста, помогите доработать программу, а то у меня совсем ничего не получается(( задача такая: в файле лежат элементы. добавить в очередь. найти максимальный элемент. Спасибо... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
04.05.2011, 11:32
Не знаю, как у тебя - у меня все работает:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <cstdlib>
#include <stdexcept>
 
namespace my
{
    template <class T>
    class stack
    {
    private:
    T* buf;
    size_t sz;
    public:
    stack();
    ~stack();
    void push(const T&);
    T pop();
    size_t size() const;
    bool empty() const;
    };
 
    template <class T>
    stack<T>::stack()
    : buf(NULL), sz(0)
    {
    }
 
    template <class T>
    stack<T>::~stack()
    {
    if(buf)
        free(buf);
    }
 
    template <class T>
    void stack<T>::push(const T& val)
    {
    ++sz;
    if((buf = (T*) realloc(buf, sizeof(T) * sz)) == NULL)
        throw std::runtime_error("Can't allocate memory");
 
    buf[sz - 1] = val;
    }
 
    template <class T>
    T stack<T>::pop()
    {
    if(!sz)
        throw std::runtime_error("Stack is empty");
    
    return buf[--sz];
    }
 
    template <class T>
    size_t stack<T>::size() const
    {
    return sz;
    }
 
    template <class T>
    bool stack<T>::empty() const
    {
    return sz == 0;
    }
}
 
int main()
{
    my::stack<int> stack;
    for(int i = -3; i <= 3; ++i)
    stack.push(i);
 
    while(!stack.empty())
    std::cout << stack.pop() << std::endl;
 
    return 0;
}
И на будущее - в С++ немножко другие средства для работы с памятью, нежели realloc, malloc и иже с ними
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru