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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
#1

класс stack - C++

17.01.2011, 18:21. Просмотров 1524. Ответов 4
Метки нет (Все метки)

Всем привет))помогите пожалуйста....нужна прога на тему шаблоны функций и классов,при чём дан класс stack.Перегрузить операции "+"-добавить элемент.и "-"-извлечь элемент....СРОЧНО надо!!!!!спасибо за ранее
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 18:21     класс stack
Посмотрите здесь:

C++ Stack overflow.
stack C++
C++ Класс Stack неробит
C++ класс stack
Stack overflow C++
C++ Создать параметризированный класс Stack
Используя класс stack, напишите функцию loadstack C++
Стандартный класс stack: как вывести все его содержимое на экран C++
C++ Класс stack
C++ Stack и указатели c++
Sos! Записать класс Stack в файл, "крашит" C++
C++ Разработать шаблонный класс Stack

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Driver_09
15 / 15 / 0
Регистрация: 03.05.2010
Сообщений: 158
17.01.2011, 18:57     класс stack #2
C++
1
2
3
4
5
6
7
8
9
10
11
template <class stack> void add(T &a)
{
T c;
c << a << endl;
}
 
template <class stack> void del(T &a)
{
T c;
// тут не знаю как...Ну удаление элемента в общем
}
Я думаю так...Ну или классом примерно через дружественные функции написать)
C++
1
2
3
4
5
6
class stack {
public:
stack(тут данные) {}
friend stack & operator+ (stack &x)
friend stack & operator- (stack &y)
               }
Ну дальше описать операторы...
Ну чем мог, помог)))
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
17.01.2011, 19:14  [ТС]     класс stack #3
спасибо очень помог)))
lemegeton
2916 / 1345 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
17.01.2011, 19:30     класс stack #4
Поискать по форуму не судьба? Тут таких стопицот.
Без перегрузки
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
#include <cstdio>
#include <cstddef>
#include <cassert>
 
template <class DataType>
class Stack {
 public:
  Stack(void) : size_(0), capacity_(0), data_(NULL) {}
  explicit Stack(size_t capacity)
    : size_(0), capacity_(capacity), data_(new DataType[capacity]) {}
  ~Stack() {
    delete [] data_;
  }
  void Push(const DataType &value) {
    assert(size_ <= capacity_);
    if (size_ == capacity_)
      set_capacity(size_ + 1);
    data_[size_++] = value;
  }
  DataType &Top() {
    assert(size_ > 0);
    return data_[size_ - 1];
  }
  DataType &Pop() {
    assert(size_ > 0);
    return data_[--size_];
  }
  size_t size() const { return size_; }
  size_t capacity() const { return capacity_; }
  void set_capacity(size_t new_capacity) {
    if (new_capacity == capacity_) return;
    DataType *new_data = new DataType[new_capacity];
    size_t smaller_capacity = (capacity_ < new_capacity)?
                               capacity_ : new_capacity;
    for (int i = 0; i < smaller_capacity; ++i)
      new_data[i] = data_[i];
    delete [] data_;
    data_ = new_data;
    capacity_ = new_capacity;
  }
 private:
  size_t size_;
  size_t capacity_;
  DataType *data_;
};
 
int main(int argc, char *argv[]) {
  Stack<int> stack;
 
  for (int i = 0; i < 10; ++i)
    stack.Push(i);
 
  for (int i = 0; i < 10; ++i)
    printf("%d ", stack.Pop());
 
  return 0;
}
Если перегрузку оператора "+" понятно, как реализовывать, то как реализовывать "-" не понятно.
igorrr37
1618 / 1246 / 124
Регистрация: 21.12.2010
Сообщений: 1,903
Записей в блоге: 7
17.01.2011, 19:33     класс stack #5
перегрузка плюс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stack>
using namespace std;
 
template<class T>
class Stack: public stack<T>{
    public:
        Stack<T>& operator+(T);
};
 
template<class T>
Stack<T>& Stack<T>::operator+(T ini){
            push(ini);
            return *this;
}
 
int main() {
    Stack<int> st;
    st+5+2+3;
    cout<<st.top();
}
Yandex
Объявления
17.01.2011, 19:33     класс stack
Ответ Создать тему
Опции темы

Текущее время: 11:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru