Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
ISergey
Maniac
Эксперт С++
1409 / 920 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
21.04.2009, 14:46 0

Лаба №5 Создание контейнерного класса

21.04.2009, 14:46. Просмотров 1959. Ответов 7
Метки (Все метки)

Ответ

Вот для начала. Остальное сам допишешь.
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
#include <iostream>
#include <cassert>
using namespace std;
 
template<typename T>
class x_array{
    typedef unsigned int uint;
public:
    x_array():_array(0),_size(0){ }
    x_array(const x_array &rhs):_array(0),_size(0){ *this = rhs; }
    x_array(const uint &newSize):_array(new T[newSize]),_size(newSize) { memset(_array, 0, sizeof(T)*_size); }
    ~x_array()
    {
        if(_array)
        {
            delete [] _array;
            _array = 0;
            _size  = 0;
        }
    }
    T *pointer() { return _array; }
    const T *const_pointer() const { return _array; }
    const uint size()    const { return _size;}
    bool is_empty() const { return _size == 0; }
 
    const T &operator[] (uint index) const
    {
        assert(index < _size);
        return _array[index];
    }
    T &operator[] (uint index)
    {
        assert(index < _size);
        return _array[index];
    }
 
    void push_back(const T &elem)
    {
        if(_array == 0){
            ++_size;
            _array = new T[_size];
            _array[_size - 1] = elem;
            return;
        }
 
        T *old = _array;
        _array = new T[_size + 1];
        for(uint i = 0; i < _size; ++i)
            _array[i] = old[i];
        _array[_size] = elem;
        ++_size;
        delete[] old;
    }
    x_array &operator = (const x_array &rhs)
    {
        if(_array != 0)
            delete[] _array;
 
        _array = new T[rhs._size];
        _size  = rhs._size;
        for(uint i = 0; i < _size; ++i)
            _array[i] = rhs._array[i];
        return *this;
    }
private:
    T  *_array;
    uint _size;
};
int main() 
{
    x_array<int> arr;
    arr.push_back(1); cout<<arr.size()<<endl;
    arr.push_back(2); cout<<arr.size()<<endl;
    arr.push_back(3); cout<<arr.size()<<endl;
    arr.push_back(4); cout<<arr.size()<<endl<<endl;
 
    cout<<arr[0]<<endl 
        <<arr[1]<<endl 
        <<arr[2]<<endl 
        <<arr[3]<<endl<<endl;;
 
    arr[0] = 10;
    arr[1] = 20;
    arr[2] = 30; 
    arr[3] = 40;
 
    cout<<arr[0]<<endl 
        <<arr[1]<<endl 
        <<arr[2]<<endl 
        <<arr[3]<<endl<<endl;
 
    x_array<int> arr2(arr); cout<<arr2.size()<<endl<<endl;
    cout<<arr2[0]<<endl 
        <<arr2[1]<<endl 
        <<arr2[2]<<endl 
        <<arr2[3]<<endl<<endl;
 
    x_array<int> arr3(30); cout<<arr3.size()<<endl<<endl;
    cout<<arr3[29]<<endl;
    //cout<<arr3[30]<<endl;//!Bug
    return 0;
}


Вернуться к обсуждению:
Лаба №5 Создание контейнерного класса
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2009, 14:46

Написать программу "Моя записная книжка" с применением контейнерного класса map
Предусмотреть возможность работы с произвольным числом записей,поиска записи по...

Построение описания класса, создание и уничтожение объектов этого класса
Построить описание класса, содержащего информацию о почтовом адресе...

Создание объекта класса с полем являющимся объектом другого класса
Bill a; cin&gt;&gt;a;//тут я ввел с помощью перегруженного оператора ElementSpiska...

0
Другие темы раздела
C++ Что такое контейнерный класс? http://www.cyberforum.ru/cpp-beginners/thread30788.html
Если можно примерчик приведите. Спасибо.
C++ Исправить недочеты в программе (лаба №4) Вот прога работы с деком. Там есть меню с некоторыми операциями над деком. Она работает. Но есть кое-какие баги. Например, когда удаляешь все элементы в деке, то при попытке посмотреть содержимое... http://www.cyberforum.ru/cpp-beginners/thread30786.html
Арканоид C++
Здравствуйте! Буду писать игру арканоид. Если кому не трудно, можете написать примерный алгоритм создания?
C++ Сортировка значений трех переменых а,б,с в порядке возростания
Составить програму из з использованиэм функции, сортировки значений трех переменых а,б,с в порядке возростания
C++ Массив http://www.cyberforum.ru/cpp-beginners/thread30769.html
В прграме обявлен масив int P={0,2,4,5,6,7,9,12}.Какиэ значения приймут выражения а)р б)*р в)*(р+4) г)*(р+р)
C++ Какие значения примут выражения? в оперативной памяты вектор int Х начинающей з адреса В7FO.Какиэ значения приймут выражения. а)Х+1 б)Х+5 в)Х-4 подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru