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

Checked_iter - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Быстродействие http://www.cyberforum.ru/cpp-beginners/thread928426.html
Что лучше использовать, если быстродействие системы достаточно важно, а элемент используется часто? template <typename T> struct Point { T x, y; }; template <typename T>
C++ Не работает openmp Написал простенькую программку с распараллеливанием собрал откомпилил, но распараллеливания нет. Программка выглядит так: -------------------------------- #include <iostream> #include <omp.h> int main(int argc, char* argv) { #pragma omp parallel num_threads(4) http://www.cyberforum.ru/cpp-beginners/thread928416.html
C++ Каким образом getchar() меняет содержимое массива?
Здравствуйте! Почему-то наличие getchar(); в коде влияет на содержимое массива. Если данный код не менять - то выводит правильный результат. Результат представлен на первом скрине. Если удалить первый getchar() с 21 строки, то в результате появляется абракадабра - представлено на втором скрине. Если удалить второй getchar(), то в результате вообще получаются нули - представлено на третьем...
C++ клас myDate
Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите операцию разности двух дат (результат в виде количества дней между датами), а также операцию увеличения даты на определенное количество дней. с++ class myDate { public: myDate(); ~myDate(); private:
C++ Не могу побороть wxDevC++ - на Hello world "Проект не откомпилирован" http://www.cyberforum.ru/cpp-beginners/thread928353.html
Хотел попробовать wxDevC++ в деле. Установил. Само собой, для начала сделал Hello, world. И вдруг выскакивает окно "Проект не откомпилирован"... и никак не поборю это дело. Текст-то классический: #include <windows.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv) { printf("Hello World!\n");
C++ Определить какое число Данная последовательность: 19, 39, 59, 79, 99, 119 ... И нужно определить, если введенное число относится к этой последовательности. Возможно ли это сделать вписав только одно условие? подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.07.2013, 17:35  [ТС]     Checked_iter
ForEveR, У меня код не запускается. Я его чуток подредактировал под visual studio 2010
Кликните здесь для просмотра всего текста
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
#include <vector>
#include <iostream>
#include <exception>
#include <stdexcept>
 
template<typename Container, typename Iterator = typename Container::iterator>
class checked_iterator
{
public:
   checked_iterator(Container& cnt, Iterator pos) :
      container_(&cnt), position_(pos)
   {
   }
   checked_iterator(const checked_iterator& rhs) :
      container_(&rhs.container_), position_(rhs.position_)
   {
   }
   checked_iterator& operator ++()
   {
      check_valid();
      ++position_;
      return *this;
   }
   checked_iterator operator ++ (int)
   {
      checked_iterator tmp(*this);
      this->operator ++();
      return tmp;
   }
   typename Container::const_reference operator * () const
   {
      return const_cast<typename Container::reference>
      (const_cast<checked_iterator&>(*this).operator *());
   }
   typename Container::reference operator * ()
   {
      check_valid();
      return *position_;
   }
   friend bool operator == (const checked_iterator& first, const checked_iterator& second)
   {
      return first.container_ == second.container_ && first.position_ == second.position_;
   }
   friend bool operator != (const checked_iterator& first, const checked_iterator& second)
   {
      return !(first == second);
   }
private:
   void check_valid() const
   {
       //std::cout <<"Mu tyt"<<std::endl;
      for (typename Container::const_iterator pos = container_->begin(); pos != container_->end(); ++pos)
      {
        //  pos==position_;
          std::cout <<"Mu tyt"<<std::endl;
          std::cout <<"*pos= "<<*pos<<' '<<"*position_= "<<*position_<<std::endl;
         if (pos == position_)
         {
            return;
         }
      }
      throw std::out_of_range("invariant failed");
   }
 
   Container* container_;
   Iterator position_;
};
 
int main()
{
    int mass[]={1,2,3,4};
   std::vector<int> vec(mass,mass+4);
   checked_iterator<std::vector<int> > c_begin(vec, vec.begin()), c_end(vec, vec.end());
   for (; c_begin != c_end; ++c_begin)
   {
      std::cout << *c_begin << std::endl;
   }
   checked_iterator<std::vector<int> > next_c_begin(vec, vec.begin());
   vec.resize(100);
   try
   {
       std::cout <<"Perexodim k cikly"<<std::endl;
       next_c_begin!=c_end;//тут сразу выбрасывается ошибка
       std::cout <<"nex_c_begin!=c_end"<<std::endl;//эта строчка не выведется
      for (; next_c_begin != c_end; ++next_c_begin)
      {
          std::cout <<"Mu eje v cikle"<<std::endl;
         std::cout << *next_c_begin << std::endl;
      }
   }
   catch (const std::exception& e)
   {
      std::cout << e.what() << std::endl;
   }
}


В этой строчке ошибка.
C++
1
next_c_begin!=c_end;//тут сразу выбрасывается ошибка
Миниатюры
Checked_iter  
 
Текущее время: 16:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru