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

класс stack - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
17.01.2011, 18:21     класс stack #1
Всем привет))помогите пожалуйста....нужна прога на тему шаблоны функций и классов,при чём дан класс stack.Перегрузить операции "+"-добавить элемент.и "-"-извлечь элемент....СРОЧНО надо!!!!!спасибо за ранее
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Driver_09
 Аватар для 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
 Аватар для lemegeton
2909 / 1338 / 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
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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
Ответ Создать тему
Опции темы

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