Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
loe_22
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 1
1

Реализация класса стека

07.02.2019, 15:00. Просмотров 156. Ответов 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
78
79
80
class array
{
    public:
 
        typedef int size_type;
 
        class iterator
        {
            public:
                typedef iterator self_type;
                typedef T value_type; //
                typedef T& reference; //
                typedef T* pointer; //
                typedef std:: output_iterator_tag iterator_category;
                typedef int difference_type; //
                iterator(pointer ptr) : ptr_(ptr) { }
                self_type operator++() { self_type i = *this; ptr_++; return i; }
                self_type operator++(int junk) { ptr_++; return *this; }
                reference operator*() { return *ptr_; } //
                bool operator==(const self_type& rhs) { return ptr_ == rhs.ptr_; }
                bool operator!=(const self_type& rhs) { return ptr_ != rhs.ptr_; }
            private:
                pointer ptr_;
        };
 
 
        array(size_type size) : size_(size) {
            data_ = new T[size_];
        }
 
        size_type size() const { return size_; }
 
        T& operator[](size_type index)
        {
            assert(index < size_);
            return data_[index];
        }
 
        const T& operator[](size_type index) const
        {
            assert(index < size_);
            return data_[index];
        }
 
        iterator begin()
        {
            return iterator(data_);
        }
 
        iterator end()
        {
            return iterator(data_ + size_);
        }
        
    private:
        T* data_;
        size_type size_;
};
class stack
{
public:
    int top;
    int s[5];
 
    stack() : top(0)
    {}
 
    void push(int var)
    {
        s[top++] = var;
    }
 
 
    int pop()
    {
        int var = s[top--];
    return var;
    }
    
};
Добавлено через 2 часа 12 минут
Исправил, но push не работает, что не так? ошибка error: member reference base type 'int' is not a structure or union data_->push_back(value);
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
class stack
{
    public:
        typedef int size_type;
        T* data_;
        size_type size_;
        class iterator
        {
            public:
                typedef iterator self_type;
                typedef T value_type; //
                typedef T& reference; //
                typedef T* pointer; //
                typedef std:: output_iterator_tag iterator_category;
                typedef int difference_type; //
                iterator(pointer ptr) : ptr_(ptr) { }
                self_type operator++() { self_type i = *this; ptr_++; return i; }
                self_type operator++(int junk) { ptr_++; return *this; }
                reference operator*() { return *ptr_; } //
                bool operator==(const self_type& rhs) { return ptr_ == rhs.ptr_; }
                bool operator!=(const self_type& rhs) { return ptr_ != rhs.ptr_; }
            private:
                pointer ptr_;
        };
 
 
        stack(size_type size){
            this->size_=size;
            this->data_ = new T[size_];
        }
 
        size_type size() const { return size_; }
 
        T& operator[](size_type index)
        {
            assert(index < size_);
            return data_[index];
        }
 
        const T& operator[](size_type index) const
        {
            assert(index < size_);
            return data_[index];
        }
 
        iterator begin()
        {
            return iterator(data_);
        }
 
        iterator end()
        {
            return iterator(data_ + size_);
        }
        void push(T value){
            data_->push_back(value);
        }
        T pop(){
            T temp = data_[data_->size()-1];
            data_->pop_back();
            return temp;
        }
        
};
 
int main()
{
    stack<int> point(3);
        point.push(3);
        point.push(30);
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2019, 15:00
Ответы с готовыми решениями:

Реализация класса стека
Приветствую! Пробую написать класс стека, но работает не совсем так, как задумывалось. Что-то не...

Как переместить из стека одного класса в массив другого класса?
// HW_on.24.11_classStack_SantaClaus.cpp: определяет точку входа для консольного приложения. //...

Реализация стека
Помогите создать структуру данных типа &quot;стек&quot;, элементы которого занимают 10 кб. Операции,...

Реализация стека
Здравствуйте, помогите пожалуйста с реализацией стека без использования STL. Стек отображен в...

Реализация стека
Подскажите, как создать класс, который реализует стек? А также методы включения и выключения...

1
Cortas
213 / 142 / 78
Регистрация: 14.03.2016
Сообщений: 456
Завершенные тесты: 5
07.02.2019, 16:25 2
Так у вас нет метода push_back, конечно код не скомпилируется
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2019, 16:25

Реализация стека
Написать программу, реализующую стек с информацией о сотрудниках и отображающую стек в порядке...

Реализация стека
Реализация стека (добавить 1 элемент, вытащить 1 элемент в стеке, определить, когда стек будет ...

реализация стека
всем привет! народ помогите с программой (не пойму в чем ошибка, помогите исправить) #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.