С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
kristofeer
4 / 4 / 2
Регистрация: 25.11.2016
Сообщений: 70
1

Шаблонный класс, определяющий двумерный динамический массив

16.05.2017, 13:05. Просмотров 285. Ответов 4
Метки нет (Все метки)

Прошу помощи
Задание:
Создайте шаблонный класс, определяющий двумерный динамический массив, тип элементов которого задается аргументом шаблона.
Размерности массива должны задаваться через параметры конструктора. Класс должен содержать методы для получения элементов и задания их значения.

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
#include <iostream>
using namespace std;
 
/*Создайте шаблонный класс, определяющий двумерный динамический массив, тип элементов которого задается аргументом шаблона. 
Размерности массива должны задаваться через параметры конструктора. Класс должен содержать методы для получения элементов и задания их значения.*/
 
template <typename T, const int rows, const int cols>
class Array2D {
private:
    T val[rows][cols];
public:
    Array2D() { }
 
    Array2D(T val, int rows, int cols) : rows(rows), cols(cols) {
        this->**val = new new int*[rows];
        for (int i = 0; i < rows; i++) {
            arr[i] = new int[cols] {}; //присвоили длину строки
        }
        //возвращаем указатель на него
        return this->arr;
    }
 
    ~Array2D() {
        for (int i = 0; i < rows; i++) {
            delete[] val[i];
        }
        delete[] val;
    }
 
    void setArray2D(T value, int rows, int cols) {
        val[rows][cols] = value;
    }
 
    void getArray2D(int rows, int cols) {
        return val[rows][cols];
    }
 
    friend ostream& operator<<(ostream& stream, const Array2D& val) {
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                stream << val[i][j] << " | ";
            }
            cout << endl;
        }
        return stream;
    }
};
 
 
 
int main() {
    setlocale(LC_ALL, "Russian");
 
    const int rows = 1, cols = 2;
    Array2D <int, rows, cols> arr;
 
    arr.setArray2D(10, 20, 0);
    arr.setArray2D(20, 30, 0);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2017, 13:05
Ответы с готовыми решениями:

Создать шаблонный класс - двумерный динамический массив
Задание:Создать шаблонный класс - двумерный динамический массив. Тип элементов...

Шаблонный класс: динамический числовой массив увеличиваемого размера
привет помогите реализовать программу на шаблоны пожалйста: Реализовать...

Шаблонный динамический класс DynArr
Создать шаблонный динамический класс DynArr для работы с одномерными массивами....

Создать динамический шаблонный класс односвязный список - List
помогите пожалуйста с задание в универ задали и я вот сижу парюсь! буду очень...

Класс "Двумерный динамический массив"
Программа вылетает при вызове деструктора. Подскажите почему это происходит. ...

4
DU3
281 / 233 / 115
Регистрация: 07.09.2016
Сообщений: 587
16.05.2017, 13:15 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename T>
class Array2D {
private:
    int rows;
    int cols;
    T** val;
public:
    Array2D(T argVal, int argRows, int argCols) : rows(artRows), cols(argCols) {
        val = new T*[rows];
        for (int i = 0; i < rows; i++) {
            val[i] = new T[cols] {};
            // тут если надо, можно все ячейки проинициализировать значением argVal
        }
    }
 
    ....
}
сделайте разными имена аргументов и мемберов rows и cols, чтобы не путать ху из ху.
ну и в следующий раз пишите, какие конкретно у вас вопросы и затруднения.
0
kristofeer
4 / 4 / 2
Регистрация: 25.11.2016
Сообщений: 70
16.05.2017, 13:42  [ТС] 3
DU3, можешь код написать полностью если не сложно не могу догнать тему вообще
0
DU3
281 / 233 / 115
Регистрация: 07.09.2016
Сообщений: 587
16.05.2017, 13:49 4
DU3, можешь код написать полностью если не сложно не могу догнать тему вообще
ну конечно. легко:
C++
1
2
template <typename T>
using Array2D = std::vector<std::vector<T>>;
готово
0
kristofeer
4 / 4 / 2
Регистрация: 25.11.2016
Сообщений: 70
16.05.2017, 13:53  [ТС] 5
DU3, понятно, векторы хз когда еще проходить начнем
буду пытаться разобраться
0
16.05.2017, 13:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2017, 13:53

Шаблонный класс и класс одномерный массив
Задание: протестировать класс шаблон, с обычными типами данных я понял как...

Шаблонный класс целочисленный массив
Доброе утро. Не спалось, решил пошаманить. Нашел задачку, которая...

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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