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

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ удалить из динамического масива строк строки из к1 по к2 http://www.cyberforum.ru/cpp-beginners/thread304117.html
помогите пожалуйста. Где-то в задаче проблема(возможно на входе в функцию dell) не выдает нормально ответ а выдакет какуюто мешанину... А на препода надеятся без-толку... #include <iostream> #include <iomanip> #include <string.h> using namespace std; char** matruc(int n,int m) { char **matr=new char*; for(int i=0;i<n;i++)
C++ Класс "Очередь" деструктор нафиг все удаляет, когда вызываю поиск по дате, и вылетает ошибка=( как сделать чтоб работало?=) Queue.h #ifndef QUEUE_H #define QUEUE_H #include <iostream> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread304115.html
Даны два целых числа: D(день) и M(месяц), определяющие правильную дату невысокосного года. Вывести значения D и M для даты, следующей за указанной. C++
Помогите пожулайста с этой задачей
Работа со структурой C++
Приветствую Всех. Вот какая проблема у меня возникла... Есть структура вида PC RAM 4096 HDD 750 SSD 120 FLASH 4 DVD-RAM 8 NOTEBOOK RAM 2048 HDD 500 SSD 80 FLASH 2 DVD-RAM 4 NETBOOK RAM 1024 HDD 250 SSD 40 FLASH 1 DVD-RAM 2 Я ее определяю так struct computer {
C++ двумерный массив http://www.cyberforum.ru/cpp-beginners/thread304093.html
Может кто-то решал или может помочь с массивом: Сформировать двумерный массив. Удалить из него строку и столбец, на пересечении которых находится максимальный элемент.
C++ Асинхронное принятие команд с клавиатуры. Как осуществить асинхронное принятие команд с клавиатуры. Ну например чтоб при нажатие клавиши срабатывала функция. Без ожидание нажатие клавиши как в getch(); подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.05.2011, 01:52     Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы
Что-то вроде


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
143
144
145
146
147
148
#include <iostream>
 
template<class T>
class vector
{
public:
    vector():
      arr(0), size(0)
      {
      }
    vector(size_t sz):
      size(sz), arr(new T[sz])
      {
      }
    vector(const vector& other):arr(new T[other.size]), size(other.size)
    {
        for(size_t i = 0; i < other.size; ++i)
            arr[i] = other.arr[i];
    }
    ~vector()
    {
        delete[] arr;
    }
    vector& operator =(const vector& other)
    {
        vector temp(other);
        swap(temp);
        return *this;
    }
    T& operator [](size_t idx)
    {
        return arr[idx];
    }
    const T& operator [](size_t idx) const
    {
        return arr[idx];
    }
    template<class T2>
    friend std::ostream& operator <<(std::ostream& os, const vector<T2>& vec)
    {
        os << "Size: " << vec.size << '\n';
        for(size_t i = 0; i < vec.size; ++i)
            os << vec.arr[i] << ' ';
        os << '\n';
    }
    template<class T2>
    friend std::istream& operator >>(std::istream& is, vector<T2>& vec)
    {
        for(size_t i = 0; i < vec.size(); ++i)
            is >> vec.arr[i];
    }
    size_t getSize() const {return size;}
protected:
    void swap(const vector& other)
    {
        std::swap(arr, other.arr);
        std::swap(size, other.size);
    }
    void print(std::ostream& os)
    {
        os << *this;
        return os;
    }
    void input(std::istream& is)
    {
        is >> *this;
        return is;
    }
    T* arr;
    size_t size;
};
 
template<class T>
class vector_safe:public vector<T>
{
public:
    vector_safe(size_t l_idx, size_t u_idx):vector<T>(), lower_idx(l_idx),
        upper_idx(u_idx)
    {
    }
    vector_safe(size_t sz, size_t l_idx, size_t u_idx):vector<T>(sz), lower_idx(l_idx),
        upper_idx(u_idx)
    {
    }
    vector_safe(const vector_safe& other):vector<T>(other),
        lower_idx(other.lower_idx), upper_idx(other.upper_idx)
    {
    }
    vector_safe& operator =(const vector_safe& other)
    {
        vector_safe tmp(other);
        swap(tmp);
        return *this;
    }
    template<class T2>
    friend std::ostream& operator <<(std::ostream& os, const vector_safe<T2>& vec)
    {
        vec.print(os);
        os << vec.lower_idx << ' ' << vec.upper_idx << '\n';
        return os;
    }
    template<class T2>
    friend std::istream& operator >>(std::istream& is, vector_safe<T2>& vec)
    {
        vec.input(is);
        is >> vec.lower_idx >> vec.upper_idx;
        return is;
    }
    T& operator [](size_t idx)
    {
        if(idx < lower_idx || idx > upper_idx)
            throw std::runtime_error("idx < lower_idx || idx > upper_idx");
        return arr[idx];
    }
    const T& operator [](size_t idx) const
    {
        if(idx < lower_idx || idx > upper_idx)
            throw std::runtime_error("idx < lower_idx || idx > upper_idx");
        return arr[idx];
    }
private:
    void swap(const vector_safe& other)
    {
        vector<T>::swap(other);
        std::swap(lower_idx, other.lower_idx);
        std::swap(upper_idx, other.upper_idx);
    }
    size_t lower_idx;
    size_t upper_idx;
};
 
int main()
{
    vector_safe<int> vec(5, 0, 3);
    try
    {
        vec[0] = 0;
        vec[1] = 1;
        vec[2] = 2;
        vec[3] = 3;
        for(size_t i = 0; i < vec.getSize(); ++i)
            std::cout << vec[i] << '\n';
    }
    catch(const std::runtime_error& e)
    {
        std::cerr << e.what() << '\n';
    }
}
 
Текущее время: 02:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru