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

STL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Течёт память рекой http://www.cyberforum.ru/cpp-beginners/thread552134.html
Не могу понять в чём проблема. Есть класс CControl, от него есть наследники CInput и CButton. Просто создание объектов типа CButton и CInput не возникает утечек памяти, использование функции Clone...
C++ Системы счисления Задано положительное действительное число up в системе счисления с основанием p с фиксированной точкой, и основание q (p, q ≠ 2, 8, 10, 16). Требуется: 1. Перевести число up в систему счисления с... http://www.cyberforum.ru/cpp-beginners/thread552125.html
Списки: функции для работы со списками C++
Помогите пожааааааалуйста с задачками!!!! ;) ОПИШИТЕ ФУНКЦИИ ТИПОВЫХ ОПЕРАЦИЙ С СПИСКАМИ: 1. Функция AddHead (int d) добавление узла в голову списка; 2. Функция AddEnd (int d) добавление узла в...
C++ Итерационные циклы
Написать программу вычисления значения функции, заданной в виде ряда, с погрешностью епсилон> 0,0001 п(пи)=3+4*(1/2*3*4 - 1/4*5*6 + 1/6*7*8 -....) Напишите пожалуйста, нужно для...
C++ Найти корень уравнения методом простой итерации http://www.cyberforum.ru/cpp-beginners/thread552109.html
Дано уравнение acos(x)-x2, корень нужно найти на интервале . Я уже пробовал много разных вариантов, но остановился на таком(он хоть что-то выдает). Правда результат не очень утешительный: Enter...
C++ Вычислить определённый интеграл методом тропеций помогите пожалуйста ни как не пойму как реализовать вычисление интеграла подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.04.2012, 15:24
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 <list>
#include <iterator>
#include <algorithm>
 
namespace simple
{
 
template<class T>
class list
{
private:
   template<class Container>
   class circle_iterator
   {
   public:
      circle_iterator(Container& cont, typename Container::iterator iter):
         cont_(cont), current(iter)
      {
      }
      circle_iterator& operator ++()
      {
         ++current;
         if (current == cont_.end())
         {
            current = cont_.begin();
         }
         return *this;
      }
      circle_iterator operator ++(int)
      {
         circle_iterator tmp(*this);
         this->operator ++();
         return tmp;
      }
      circle_iterator operator --()
      {
         if (current == cont_.begin())
         {
            std::advance(current, cont_.size() - 1);
         }
         else
         {
            --current;
         }
         return *this;
      }
      circle_iterator operator --(int)
      {
         circle_iterator tmp(*this);
         this->operator --();
         return tmp;
      }
      typename Container::value_type& operator *()
      {
         return *current;
      }
      typename Container::pointer operator ->()
      {
         return &(*current);
      }
   private:
      Container& cont_;
      typename Container::iterator current;
   };
public:
   typedef circle_iterator<std::list<T> > iterator;
   typedef iterator const_iterator;
 
   list():container()
   {
   }
   list(const std::initializer_list<T>& args):container(args)
   {
   }
   void insert(const T& value)
   {
      if (!container.empty())
      {
         auto up_bound = std::upper_bound(container.begin(), container.end(), value);
         if (up_bound != container.end())
         {
            container.insert(up_bound, value);
         }
         else
         {
            container.push_back(value);
         }
      }
      else
      {
         container.push_back(value);
      }
   }
   void erase(const T& value)
   {
      auto iter = std::find(container.begin(), container.end(), value);
      if (iter != container.end())
      {
         container.erase(iter);
      }
   }
   iterator begin() { return iterator(container, container.begin()); }
   //iterator end() { return iterator(container, container.end()); }
   //const_iterator begin() const { return container.cbegin(); }
   //const_iterator end() const { return begin(); }
private:
   template<class T2>
   friend std::ostream& operator << (std::ostream&, const list<T2>&);
   std::list<T> container;
};
 
template<class T>
std::ostream& operator << (std::ostream& os, const list<T>& lst)
{
   std::copy(lst.container.begin(), lst.container.end(), std::ostream_iterator<T>(os, "\n"));
   return os;
}
 
}
 
int main()
{
   simple::list<int> lst;
   lst.insert(10);
   lst.insert(9);
   lst.insert(8);
   lst.insert(20);
   lst.insert(5);
   std::cout << lst;
   lst.erase(8);
   lst.erase(5);
   std::cout << "after erase" << std::endl;
   std::cout << lst;
   int cnt = 10;
   int current = 0;
   std::cout << "List" << std::endl;
   for (simple::list<int>::iterator iter = lst.begin(); current != cnt; ++current, ++iter)
   {
      std::cout << *iter << std::endl;
   }
}
http://liveworkspace.org/code/9c91d4...e505f20410b10a

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