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

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

Войти
Регистрация
Восстановить пароль
 
Tonzik
32 / 32 / 8
Регистрация: 11.06.2013
Сообщений: 124
#1

Создать стек на основе контейнера vector - C++

13.06.2014, 02:02. Просмотров 869. Ответов 1
Метки нет (Все метки)

На основе контейнера vector построить стек целых чисел. Выполнить операции занесения элемента в стек, извлечение значения с вершины стека, вывода всех значений стека на экран, определения количества элементов стека.
Предусмотреть возможности:
- Формирование входных данных заданного размера (количество точек для проверки);
- Сохранение входных данных в файле с заданной названием;
- Считывание входных данных из заданного файла;
- Вывод результатов на экран или в файл.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 02:02     Создать стек на основе контейнера vector
Посмотрите здесь:
C++ Реализовать возможности контейнера vector используя класс стек
На основе контейнера vector построить двумерный динамический массив C++
C++ Можно ли на основе vector'а создать двумерный массив
Создать стек целых чисел на основе статического массива. C++
Очистка контейнера vector C++
C++ Обработка STL контейнера vector
Reallocation памяти контейнера std::vector C++
C++ Копирование контейнера vector в конструкторе (STL)
C++ Как удалить последний элемент контейнера vector
C++ Возможно ли вложение контейнера array в контейнер vector?
C++ Реализация контейнера идентичного std::vector по Страуструпу
Использование контейнера vector и перегрузка операций в классе C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
13.06.2014, 07:36     Создать стек на основе контейнера vector #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Примерно так.

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
class vStack
{
   public:
      void push(int);
      bool pop(int&);
      unsigned count();
      bool display();
      bool save(const std::string&);
      bool load(const std::string&);
   private:
      bool fromStream(std::istream& strm);
      bool toStream(std::ostream&);
      std::vector<int> data_;
};
 
void vStack::push(int val)
{
   data_.push_back(val);
}
 
bool vStack::pop(int& val)
{
   if(data_.size())
   {
      val = data_[0];
      data_.erase(data_.begin()+0);
      return true;
   }
   return false;
}
 
unsigned vStack::count()
{
   return data_.size();
}
 
bool vStack::toStream(std::ostream& strm)
{
   for(unsigned pos=0;pos<data_.size();pos++)
   {
      strm<<data_[pos]<<std::endl;
      if(!strm) break;
   }
   return strm;
}
 
bool vStack::fromStream(std::istream& strm)
{
   data_.clear();
   while(true)
   {
      int val=0;
      strm>>val;
      if(strm)
      {
         data_.push_back(val);
      }
      else
      {
         break;
      }
   }
   return (data_.size()>0 && strm.eof());
}
 
bool vStack::display()
{
   return toStream(std::cout);
}
 
bool vStack::save(const std::string& f_name)
{
   std::ofstream out_file(f_name.c_str());
   return toStream(out_file);
}
bool vStack::load(const std::string& f_name)
{
   std::ifstream in_file(f_name.c_str());
   return fromStream(in_file);
}
 
int main()
{
   int cnt=0;
   std::cout<<"Enter size\n";
   std::cin>>cnt;
   if(cnt>0)
   {
      vStack stack;
      for(int nom=0;nom<cnt;nom++)
      {
         std::cout<<"Enter element "<<nom<<"\n";
         int elem = 0;
         std::cin>>elem;
         stack.push(elem);
      }
      std::cout<<"\n"<<" stack size "<< stack.count();
      std::cout<<"\n";
      stack.display();
      std::cout<<"\n";
 
      int pop_val=0;
      if(stack.pop(pop_val))
      {
         std::cout<<"value "<<pop_val<<"\n";
      }
 
      std::cout<<"\n"<<" stack size "<< stack.count();
      std::cout<<"\n";
      stack.display();
      std::cout<<"\n";
      std::cout<<"Enter file_name\n";
      std::string f_name;
      std::cin>>f_name;
      if(!stack.save(f_name))
      {
         std::cout<<"Save failed\n";
      }
      vStack loaded_stack;
      std::cout<<"\n";
      std::cout<<"Enter file_name\n";
      std::cin>>f_name;
      if(loaded_stack.load(f_name))
      {
         std::cout<<"\n"<<" stack size "<< loaded_stack.count();
         std::cout<<"\n";
         loaded_stack.display();
      }
      else
      {
         std::cout<<"Load failed\n";
      }
 
 
   }
   return 0;
}
Ответ Создать тему
Опции темы

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