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

Реализация очереди массивом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ очередь, стек, вектор, множество http://www.cyberforum.ru/cpp-beginners/thread435161.html
не могу разобраться, если очередь и стек понятно что такое, то вектор и множество, я начинаю не понимать....вот если есть кусок кода с очередью и стеком, с вектором и множеством как? struct list_element { func* listfunc; list_element* next; list_element():listfunc(0),next(0){} };
C++ Задача на псевдографику. Здравствуйте. Помогите пожалуйста написать прототип функции.Суть состоит вот в чем: Имеется два массива char a = { '┌', '─', '┬', '┐', '├', '└', '┘', '┤', '┴', '┼', '│'} b = { '╒', '═', '╤', '╕', '╞', '╘', '╛', '╡', '╧', '╪', '║'} . На экран выводится таблицы, состоящая из символов массива а. Необходимо заменить все элементы этой таблицы на соответствующие элементы массива... http://www.cyberforum.ru/cpp-beginners/thread435155.html
C++ Как вернуть шаблонный итератор?
Например мне необходимо вернуть шаблонный итератор, но я не пойму почему не компилится, если без шаблона то все ОК. template <class T> vector<T>::iterator a<T>() { vector<T> f; return f.begin(); } Добавлено через 13 минут Вопрос снят. Нужно было сделать так.
C++ com порт
Здравствуйте. Стоит задача написать программу для связи компьютера и прибора через интерфейс RS232. Необходимо посылать данные на прибор примерно в таком виде: ESC 's' 'B' '2' '5' 'C' '0' '1' 'F' '4' где ESC это символ с кодом 27 (DEC), 0х1В (НЕХ). И разумеется нужно своевременно получать ответ с устройства. Скажите пожалуйста в каком направлении искать нужную информацию, и может быть...
C++ Отладка в среде wxDev C++ http://www.cyberforum.ru/cpp-beginners/thread435079.html
Когда запускаю отладку появляется окно с ошибкой "an error occurred in the application". Что с этим делать? Или это так и должно быть?
C++ Вычисление функций с использованием их разложения в степенной ряд Помогите пожалуйста с задачей: Постановка задачи: Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в трех случаях: а) для заданного n; y=-1/2*ln*(1-2*x*cosPi/3+x^2) n=35. ln-(логарифм натуральный); Pi-(пи(3.14)); x^2-(икс в квадрате). подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
26.01.2012, 04:52     Реализация очереди массивом
easybudda, полагаю, что-то в этом роде:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
class FixedSizeQueueIsEmptyException : public std::exception
{
public:
    virtual ~FixedSizeQueueIsEmptyException() throw()
    {
    }
    
    virtual const char *what() const throw()
    {
        return "queue is empty";
    }
};
 
class FixedSizeQueueIsFullException : public std::exception
{
public:
    virtual ~FixedSizeQueueIsFullException() throw()
    {
    }
    
    virtual const char *what() const throw()
    {
        return "queue is full";
    }
};
 
template<typename T, size_t N>
class FixedSizeQueue
{
public:
    typedef T value_type;
    typedef size_t size_type;
    
public:
    FixedSizeQueue():
    m_top(0),
    m_bottom(0),
    m_size(0)
    {
    }
    
    size_type size() const
    {
        return m_size;
    }
    
    bool empty() const
    {
        return size() == 0;
    }
    
    bool full() const
    {
        return size() == N;
    }
    
    void push(const T& value)
    {
        if (full())
            throw FixedSizeQueueIsFullException();
        
        m_queue[m_bottom] = value;
        
        m_bottom = s_next_bottom();
        ++m_size;
    }
    
    void pop()
    {
        if (empty())
            throw FixedSizeQueueIsEmptyException();
        
        m_top = s_next_top();
        --m_size;
    }
    
    T top() const
    {
        if (empty())
            throw FixedSizeQueueIsEmptyException();
        
        return m_queue[m_top];
    }
    
private:
    size_type s_next_loop_count(size_type counter, size_type size) const
    {
        return ++counter == size ? 0 : counter;
    }
    
    size_type s_next_top() const
    {
        return s_next_loop_count(m_top, N);
    }
    
    size_type s_next_bottom() const
    {
        return s_next_loop_count(m_bottom, N);
    }
    
private:
    value_type m_queue[N];
    size_type m_top;
    size_type m_bottom;
    size_type m_size;
};
Добавлено через 2 минуты
easybudda, хотелось бы обратить внимание (на всякий случай) на то, что речь шла о реализации очереди
Цитата Сообщение от NoMasters Посмотреть сообщение
постоянной максимальной длинны
 
Текущее время: 01:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru