1 / 1 / 0
Регистрация: 05.06.2019
Сообщений: 4
1

Реализовать шаблон динамического числового массива фиксированной длины

05.06.2019, 18:51. Показов 4017. Ответов 7

Студворк — интернет-сервис помощи студентам
Реализовать динамический числовой массив фиксированной длины как
класс шаблон. Класс должен иметь перегруженный оператор индексирования.
Продемонстрировать конкретизацию шаблона и его использование.
Помогите,пожалуйста!
Задали,а я без понятия как это делать!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2019, 18:51
Ответы с готовыми решениями:

Отличие массива фиксированной длины от указателя
Объясните на примере в чем отличие от *(указателя) когда это массивы?

Реализовать шаблон класса для хранения динамического списка
Нужно реализовать: 1.Операции вставки элемента в начало списка 2.Операцию удаления первого...

Разработать алгоритм быстрой сортировки одномерного массива фиксированной длины
Разработать алгоритм быстрой сортировки одномерного массива фиксированной длины N заполненного...

Создание числового массива произвольной длины
Как создать числовой массив не указывая его длины. Т.е. предполагается, что длина массива...

7
163 / 70 / 39
Регистрация: 28.05.2019
Сообщений: 241
05.06.2019, 20:49 2
Лучший ответ Сообщение было отмечено nvrmnd как решение

Решение

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
#include <algorithm>
#include <iostream>
 
using namespace std;
 
template<typename Tp>
class Vector
{
    Tp* data_;
    size_t size_;
 
public:
    Vector(size_t size, Tp value) : data_(new Tp[size]), size_(size)
    {
        fill(data_, data_ + size_, value);
    }
 
    Tp& operator[](size_t i)
    {
        return data_[i];
    }
 
    const Tp& operator[](size_t i) const
    {
        return data_[i];
    }
 
    size_t size() const
    {
        return size_;
    }
 
    Tp* data()
    {
        return data_;
    }
 
    const Tp* data() const
    {
        return data_;
    }
 
    Vector(const Vector& other)
    {
        make_copy(other);
    }
 
    Vector& operator=(const Vector& other)
    {
        delete[] data_;
        make_copy(other);
    }
 
    ~Vector()
    {
        delete[] data_;
    }
 
private:
    void make_copy(const Vector& other)
    {
        data_ = new Tp[other.size_];
        size_ = other.size_;
        copy(other.data_, other.data_ + size_, data_);
    }
};
 
int main()
{
    Vector<int> v(10, 666);
    auto vcpy(v);
    cout << vcpy.size() << endl;
    for (int i = 0; i < 10; ++i)
        cout << vcpy[i] << endl;
    return 0;
}
2
1 / 1 / 0
Регистрация: 05.06.2019
Сообщений: 4
14.06.2019, 13:19  [ТС] 3
Огромное спасибо!
0
1 / 1 / 0
Регистрация: 05.06.2019
Сообщений: 4
14.06.2019, 13:28  [ТС] 4
Реализовать динамический числовой массив длины как класс шаблон.
Добавить в класс перегруженные операторы "+", а также оператор проверки на
равенство и неравенство. Продемонстрировать конкретизацию шаблона и его
использование
0
163 / 70 / 39
Регистрация: 28.05.2019
Сообщений: 241
14.06.2019, 13:49 5
Цитата Сообщение от nvrmnd Посмотреть сообщение
Добавить в класс перегруженные операторы "+"
че он должен делать?
1
1 / 1 / 0
Регистрация: 05.06.2019
Сообщений: 4
14.06.2019, 13:58  [ТС] 6
Цитата Сообщение от elseecay Посмотреть сообщение
че он должен делать?
Ничего,вроде.
1
163 / 70 / 39
Регистрация: 28.05.2019
Сообщений: 241
14.06.2019, 14:26 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
#include <algorithm>
#include <iostream>
 
using namespace std;
 
template<typename Tp>
class Vector
{
    Tp* data_;
    size_t size_;
 
public:
    Vector(size_t size, Tp value) : data_(static_cast<Tp*>(malloc(sizeof(Tp) * size))), size_(size)
    {
        fill(data_, data_ + size_, value);
    }
 
    Tp& operator[](size_t i)
    {
        return data_[i];
    }
 
    const Tp& operator[](size_t i) const
    {
        return data_[i];
    }
 
    size_t size() const
    {
        return size_;
    }
 
    Tp* data()
    {
        return data_;
    }
 
    const Tp* data() const
    {
        return data_;
    }
 
    Vector(const Vector& other)
    {
        make_copy(other);
    }
 
    Vector& operator=(const Vector& other)
    {
        free(data_);
        make_copy(other);
    }
 
    ~Vector()
    {
        free(data_);
    }
 
    void resize(size_t size)
    {
        data_ = static_cast<Tp*>(realloc(data_, sizeof(Tp) * size));
        if (size > size_)
            fill(data_ + size_, data_ + size, Tp{ });
        size_ = size;
    }
 
    bool operator==(const Vector<Tp>& other)
    {
        if (other.size_ != size_)
            return false;
        return !memcmp(data_, other.data_, sizeof(Tp) * size_);
    }
 
    bool operator!=(const Vector<Tp>& other)
    {
        return !operator==(other);
    }
 
    template<typename T>
    void operator+(T&&) { }
 
private:
    void make_copy(const Vector& other)
    {
        data_ = static_cast<Tp*>(malloc(sizeof(Tp) * other.size_));
        size_ = other.size_;
        copy(other.data_, other.data_ + size_, data_);
    }
};
 
int main()
{
    Vector<int> v(10, 666);
    v.resize(50);
    auto vcpy(v);
    for (size_t i = 0; i < vcpy.size(); ++i)
        cout << vcpy[i] << endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 14.12.2020
Сообщений: 1
17.12.2020, 17:11 8
СПАСИБО ТЕБЕ ОГРОМНОЕ!!!
0
17.12.2020, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2020, 17:11
Помогаю со студенческими работами здесь

Шаблон динамического массива
//=================================================================================================...

Строку произвольной длины разрезать на несколько строк фиксированной длины
Есть строка большой длины (до 2000 символов) - последние символы в строке ~^, нужно разделить эту...

Шаблон задаваемого с клавиатуры динамического массива
Обязательно с использованием классов Есть задача. Дан массив вещественных чисел. а) Ко всем...

Задание длины динамического массива
Добрый день, уважаемые. Есть динамический массив с длиной Х setlength(L,Х) Мне нужно написать,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru