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

создать класс шаблон Vector - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исключения http://www.cyberforum.ru/cpp-beginners/thread895554.html
Нужно что бы программка при вводе данных, если строка пуста, то выкидывала исключение... Вот функция где расписана обработка. Программка компилируется, дает ввести данные, но потом выкидывает.....
C++ Массив: Найти произведение двух верхнеугольных матриц, которые храняться в упакованном виде в одномерных массивах. Найти произведение двух верхнеугольных матриц,которые храняться в упакованном виде в одномерных масивах. http://www.cyberforum.ru/cpp-beginners/thread895551.html
C++ Решить интеграл
Необходимо решить интеграл в среде С++ 1 S sin(3x^2-5сos(x))dx с точностью E=10^-4.Шаги подбирать по принципу Рунге o Вообще не могу понять как такое сделать(
Просьба к тем, у кого есть visual c++ 2012 C++
Проблема в том, что я сделал код, который должен поддерживаться вижуалкой. Но из-за технических причин писал я не в ней. В коде я использовал getline , который, как мне сказали не поддерживаться в...
C++ Простая программка (найти ошибку в коде) http://www.cyberforum.ru/cpp-beginners/thread895524.html
Не могу понять в чем проблема #include<iostream> #include<conio.h> using namespace std; class ARR {
C++ Считать из файла числовые переменные построчно Приветствую. Для начала - общее описание того, что мне нужно. Есть файл. В нем построчно записаны числа. Но вот чисел там может быть разное количество - значит, статический массив мне не подойдет. ... подробнее

Показать сообщение отдельно
gehselber
0 / 0 / 0
Регистрация: 08.06.2013
Сообщений: 6

создать класс шаблон Vector - C++

08.06.2013, 18:58. Просмотров 1085. Ответов 11
Метки (Все метки)

создать класс шаблон Vector, который отличается от класса Array тем , что в данном классе можно как добавлять элементы , так и удалять элементы массива.
Блин , я не знаю что преподу нужно , я не знаю как дальше делать, он говорит что память не распределяется, я хз как распределить, сдал лабу с массивом, с вектором ему все что делаю не нравиться, первый листинг класса арэй, я ему сдал, все норм, остальные вектор, помогите кто понять или допишите , я хз что делать.

первый класс Array

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
#include "iostream"
 
using namespace std;
 
 
 
class array
{
    int  size;
    int *arr;
 
public:
    array(int = 0);
    array(const array &obj);
    ~array();
 
    array &operator = (const array &);
 
    void get();
    void rever();
    void show(void);
};
 
 
array :: array(int N)//конструктор с параметром
{
    this->size = N = 10;
 
    this->arr = new int[size];
 
 
    for(int i = 0; i < size; ++i)
        this->arr[i] = i + 1;
 
}
 
array :: array(const array &obj) : size(obj.size)//конструктор копии
{
    this->arr = new int[size];
 
    for(int i = 0; i < size; ++i)
        this->arr[i] = obj.arr[i];
}
 
array :: ~array()//деструктор
{
    delete[] arr;
}
 
void array :: get()
{
    for(int i = 0; i < size; ++i)
    {
        cout << "Enter array" << "[" << i + 1 << "]" << ":" << endl;
        cin >> arr[i];
 
    }
}
 
 
void array :: show(void)
{
    for(int i = 0; i < size;++i)
    {
        cout << "Result  array" << "[" <<  i << "]" << arr[i] <<  endl;
    }
}
 
 
void array :: rever()
{
    int d;
 
    for(int i = 0; i < size/2; ++i)
    {
        d = arr[i];
        arr[i] = arr[size  - i - 1];
        arr[size - i - 1] = d;
 
    }
 
    for(int i = 0; i < size; ++i)
    {
        cout << arr[i] << endl;
    }
 
}
 
void main()
{
    array a;
 
    a.get();
    a.show();
    a.rever();
 
 
 
}

вот по такому принципу и вектор сделал, ему не понравилось

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
                                                                    
                                             
#include <iostream>
#include <iomanip>
using namespace std;
 
template <typename T>
 
class Vector
{
    int size;
    T *mass;
public:
 
    Vector(T *m=0, int n=0);
    Vector(const Vector<T> &);
    ~Vector();
 
    void addVector();
    T deleteVector();
    void ShowVector();
};
 
template <typename T>
 
Vector <T> :: Vector(T *m, int n)
{
    this->size = n;
    this->mass = new T[this->size];
 
    for(int i = 0; i < size; i++)
        this->mass[i] = m[i];
}
 
template <typename T>
 
Vector<T> ::Vector(const Vector<T> &obj)
{
    this->size = obj.size;
    this->mass = new T(T *obj.mass, obj.size);
 
    for(int i = 0; i < obj.size; i++)
        this->mass[i] = obj.mass[i];
}
 
template <typename T>
 
Vector <T> :: ~Vector()
{
    if(this->mass)
        delete[] mass ;
}
 
template <typename T>
 
void Vector <T> :: addVector()
{
    
    cout << "VVedite kol elem massiva : " << endl;
    cin >> size;
    for(int i = 0; i < size; ++i)
    {
        cout << "Enter array " << endl;
        cout << i + 1 << ":" << endl;
        cin >> mass[i];
 
    }
 
}
 
 
 
template <typename T>
 
void Vector <T> ::ShowVector()
{
    cout << "Massiv :" << endl;
 
    for(int i = 0; i < size; i++)
    {
        cout << mass[i] << " " << endl;
    }
    
}
 
 
 
template <typename T>
 
T Vector <T> :: deleteVector()
{
    int del;
    int j, k;
    cout << "VVedite element dl9 udalenija :" << endl;
    cin >> del;
 
    for(int i = 0; i < size; i++)
    {
        if(mass[i] == del)
        {
            for( j = i; j < size - 1; j++) 
                mass[j] = mass[j + 1];
            j++;
            size--;
            i++;
            mass[j] = -1;
        }
        
    }
 
    for(int i = 0; i < size; i++)
        cout << mass[i] << endl;
 
    return 0;
}
 
 
void main()
{
    Vector<int> v;
 
 
    v.addVector();
    v.ShowVector();
    v.deleteVector();
    
 
}
тут обрыв на деструкторе, память не правильно, хз что делать, сказал что вектор не дожен заполняться, а должен добавляться, я хз как делать



сделал так, говорит удалять нужно по значению, и опять же память полностью не удаляется , мб кто поможет, нужно до завтра

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
149
150
151
152
153
154
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
 
int i;
template <typename T>
 
class Vector
{
    int size;
    T *mass;
 
public:
 
    Vector(T *m=0, int n=0);
    Vector(const Vector<T> &);
    ~Vector();
 
    void addVector(const T &);
    T deleteVector();
    void ShowVector();
};
 
template <typename T>
 
Vector <T> :: Vector(T *m, int n)
{
    this->size = n;
    this->mass = new T[this->size];
 
    for(int i = 0; i < size; i++)
        this->mass[i] = m[i];
}
 
template <typename T>
 
Vector<T> ::Vector(const Vector<T> &obj)
{
    this->size = obj.size;
    this->mass = new T(T *obj.mass, obj.size);
 
    for(int i = 0; i < obj.size; i++)
        this->mass[i] = obj.mass[i];
}
 
template <typename T>
 
Vector <T> :: ~Vector()
{
    if(this->mass)
        delete[] mass ;
}
 
template <typename T>
 
void Vector <T> :: addVector(const T &value)
{
    mass[i] = value;
    i++;
    size = i;
}
 
 
template <typename T>
 
T Vector <T> :: deleteVector()
{
    mass[i];
    size = i;
    return mass[i--];
}
 
template <typename T>
 
void Vector <T> :: ShowVector()
{
    cout << "Massiv :" << endl;
 
    for(int i = 0; i < size; i++)
    {
        cout << mass[i] << " " << endl;
    }
 
    
}
 
int menu()
{
    cout << "VVedite 1 - dobavit element : " << endl;
    cout << "VVedite 2 - udalit  element : " << endl;
    cout << "VVedite 3 - vsvesti resultat : " << endl;
    cout << " 0 - vuhod " << endl;
    int z;
    cin >> z;
    return z;
}
 
void main()
{
    Vector<int> v;
    
    
 
    while(int z = menu())
    {
        switch(z)
        {
        case 1 :
            {
                int j = 1;
                while(j != 0)
                {
                    cout << "dobav" << endl;
                    cin >> j;
                    if(j != 0)
                    v.addVector(j);
                }
                break;
            }
        case 2 :
            {
                int n = 1;
                while(n != 0)
                {
                    cout << "udal" << endl;
                    cin >> n;
                    if(n != 0)
                    v.deleteVector();
                }
                break;
            }
 
        case 3 :
            {
                v.ShowVector();
                break;
            }
 
        case 0 : exit;
 
        default :
            {
                cout << " vvedite cifri" << endl;
                break;
            }
        }
 
    }
    
    cin.get();
    
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru