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

Создание функции для работы со стеками по шаблону - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна програмка, подсчитывающая количество введенных символов http://www.cyberforum.ru/cpp/thread1441635.html
Нужна простая программка. Задача следующая. При запуске системы должна разворачиваться программа с 3 цифрами, каждая из них подсчитывает кол-во нажатия определенных клавиш скажем QWE , и при нажатии скажем пробела, все подсчеты должны скидываться. Помогите плиз. Уверен для вас это раз плюнуть, а для меня лес дремучий.
C++ Разобрать код рисования Помогите разобрать код до функции рисования,дальше вроде все понятно #include <cstdlib> #include <ctime> #include <iostream> #include <GL/glut.h> int width; int height; http://www.cyberforum.ru/cpp/thread1441631.html
C++ Могут ли мне ответить на support.microsoft.com по поводу WinAPI, если у меня visual studio express?
Спрашивать в других местах - не предлагать. По моей проблеме с WinAPI даже в MSDN нет документации. Значит, по логике, надо спросить у разработчиков WinAPI - у MS. Как думаете, помогут чем-то?
Есть ли смысл писать в support.microsoft.com, ну там исходник чтобы дали, подсказали что-то по коду и т.д? C++
Или это не в их компетенции? Пробовал кто-нибудь? Добавлено через 1 минуту В гугл не посылать. Гуглить умею, еще и как. Здесь реально очень нетривиальная проблема. Ничего в гугле толком нет, хоть в рунете, хоть в буржунете.
C++ Статическая структура в классе: Неразрешенный внешний символ http://www.cyberforum.ru/cpp/thread1441034.html
Решил создать класс со статической структорой, выдает ошибку Ошибка 1 error LNK2001: неразрешенный внешний символ ""public: static struct dist sf::p" (?p@sf@@2Udist@@A)" Ошибка 2 error LNK1120: неразрешенных внешних элементов: 1 Вообще возможно ли такое или нет? Для примера могу показать код #include <iostream> struct dist { int f; float in;
C++ Способы и средства защиты программных средств сетей ЭВМ Всем привет! Тема, возможно, немного не ко двору. Я пишу реферат на тему "Способы и средства защиты программных средств сетей ЭВМ. Сравнительный анализ и направления развития", сдать его нужно уже на следующей недели. Проблема в том, что я понятия не имею, о чем там вообще писать. В инете толком ничего не нашел. Может, кто-нибудь скинуть литературу или ссылки? Ну а если у кого-то есть готовый... подробнее

Показать сообщение отдельно
Max Dark
шКодер самоучка
1682 / 1483 / 537
Регистрация: 09.10.2013
Сообщений: 3,357
Записей в блоге: 8
Завершенные тесты: 2
10.05.2015, 00:20     Создание функции для работы со стеками по шаблону
Вам нужна еще 1 структура - звено списка
примерно так
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 <stdexcept>
#include <exception>
 
// стек на основе односвязного списка
template<class Type>
class stack {
public:
    typedef Type value_type; // тип значения
    typedef value_type& value_ref; // ссылка на элемент
    typedef const value_type& value_cref; // константная ссылка
private:
    // структура "звено"
    struct node {
        value_type value; // значение
        node* link;  // указатель на следующий
        // конструктор по умолчанию
        node():value(0),link(nullptr){}
        // конструктор с установкой значений
        node(value_cref val, node* prev):value(val),link(prev){}
    };
    node*  m_head; // голова стека
    size_t m_size; // кол-во значений
public:
    // конструктор по умолчанию
    stack():m_head(nullptr),m_size(0){}
    // деструктор
    ~stack() { clear(); }
    // проверка на пустоту
    bool is_empty() { return nullptr == m_head; }
    // возвращает кол-во значений
    size_t size() { return m_size; }
    // очистка стека
    void clear() {
        while(not is_empty()) {
            node* tmp = m_head;
            m_head = m_head->link;
            delete tmp;
        }
        m_size = 0;
    }
    // возвращает значение на верхушке стека
    value_ref top() {
        if(is_empty())
            throw std::runtime_error("stack is empty");
        return m_head->value;
    }
    // добавление элемента
    void push(value_cref value) {
        // создаем звено
        node* tmp = new node(value, m_head);
        if(!tmp)
            throw std::runtime_error("no memory");
        // запоминаем новую голову
        m_head = tmp;
        // увеличиваем счетчик
        ++m_size;
    }
    // удаляет верхний элемент
    void pop() {
        if(is_empty())
            throw std::runtime_error("stack is empty");
        // запоминаем голову
        node* tmp = m_head;
        // смещаемся к следующему
        m_head = m_head->link;
        // уменьшаем счетчик
        --m_size;
        // удаляем старую голову
        delete tmp;
    }
};
struct dummy {};
int main() {
    stack<dummy> st;
    st.push(dummy());
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru