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

Свой собственный Vector

21.08.2020, 11:16. Показов 421. Ответов 8
Метки нет (Все метки)

Хочу реализовать свой собственный Vector по подобию std.
Пытаюсь скопировать его функционал, но внутри будет просто динамический массив.
Как сделать такое отображение элементов в отладчике (скриншот во вложении)?

Сам код:
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
#pragma once
#ifndef MYVECTOR_H
#define MYVECTOR_H
 
template < typename T >
class mvector {
    T* arr;
    unsigned int capacity;
    unsigned int current;
 
public:
 
    T& operator[](unsigned int n) {
        return get(n);
    }
 
    mvector()
    {
        arr = new T[2];
        capacity = 2;
        current = 0;
    }
 
    ~mvector()
    {
        delete arr;
        capacity = 0;
        current = 0;
    }
 
    void push_back(T value)
    {
        if (current == capacity) {
            T* temp = new T[capacity + 10];
            for (int i = 0; i < capacity; i++) {
                temp[i] = arr[i];
            }
            delete[] arr;
            capacity += 10;
            arr = temp;
        }
        arr[current] = value;
        current++;
    }
 
    void pop_back()
    {
        current--;
    }
 
    T& get(unsigned int index)
    {
        return arr[index];
    }
 
    T at(unsigned int index)
    {
        if (index < current)
            return arr[index];
    }
 
    int size()
    {
        return current;
    }
 
    void erase(unsigned int index){
        if (index < current){
            for (int i = index; i < current-1; i++) {
                arr[i] = arr[i+1];
            }
            current--;
        }
    }
 
    void clear() {
        current = 0;
    }
 
    int getcapacity()
    {
        return capacity;
    }
 
};
#endif
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Изображения
 
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2020, 11:16
Ответы с готовыми решениями:

Собственный динамический массив (аналог std::vector)
Вот возникла идея написать что-то на подобии вектора, но возникла проблема что не так с kallocSize?...

Как создать свой собственный тип на C++?
Здравствуйте!!! Возник вопрос как создать свой собственный тип на С++ который включат такие типы...

Может ли программа менять свой собственный код?
Значит идея такая создать расширяемую программу. Сначала создаём заголовочный файл. В нём пишем...

Разрабатываю свой STL контейнер по типу vector
При тесте своего класса myContainer отдельно, всё было неплохо, НО при привязке его к основной...

8
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
21.08.2020, 11:45 2
Цитата Сообщение от Vital88 Посмотреть сообщение
Как сделать такое отображение элементов в отладчике (скриншот во вложении)?
Create custom views of C++ objects in the debugger using the Natvis framework

Добавлено через 16 минут
Цитата Сообщение от Vital88 Посмотреть сообщение
Пытаюсь скопировать его функционал, но внутри будет просто динамический массив.
Попробуй проверить, как работает твой массив на mvector<std::unique_ptr<int>>
0
2005 / 954 / 362
Регистрация: 08.11.2016
Сообщений: 2,748
21.08.2020, 11:56 3
деструктор дырявый
0
0 / 0 / 0
Регистрация: 21.08.2020
Сообщений: 2
21.08.2020, 14:00  [ТС] 4
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Create custom views of C++ objects in the debugger using the Natvis framework
Спасибо! Хоть буду знать в какую сторону копать
Я так понял Natvis только с 2015 студии? Не могу найти в 2010

Добавлено через 1 минуту
Цитата Сообщение от Annemesski Посмотреть сообщение
деструктор дырявый
А в чем дырвявость?
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
21.08.2020, 14:04 5
Цитата Сообщение от Vital88 Посмотреть сообщение
А в чем дырвявость?
[] потерял у delete
1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
21.08.2020, 14:07 6
Цитата Сообщение от Vital88 Посмотреть сообщение
Не могу найти в 2010
Может лучше студию сменить?
0
2005 / 954 / 362
Регистрация: 08.11.2016
Сообщений: 2,748
21.08.2020, 14:19 7
Цитата Сообщение от AndryS1 Посмотреть сообщение
Может лучше студию сменить?
Свежее решение! Особенно в 2020-ом ))
0
1006 / 692 / 310
Регистрация: 26.02.2015
Сообщений: 3,152
21.08.2020, 18:56 8
Vital88, скачай на официальном сайте новую Visual Studio Community. Она бесплатна.
0
Эксперт С++
8372 / 6108 / 613
Регистрация: 10.12.2010
Сообщений: 28,518
Записей в блоге: 30
21.08.2020, 21:04 9
Насчет вектора https://www.cyberforum.ru/blog... g6603.html

Кроме того чем старше версия как по мне тем она прожорливее по ресурсам это учтите.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2020, 21:04

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Если каждый поток пишет в свой элемент std::vector, является ли это потокобезопасным ?
Добрый день. Вот есть вектор std::vector и каждый поток пишет только в свой элемент. В стандарте...

Почему vector v{vector{1, 2} }; имеет тип vector<int>
std::vector v{std::vector{1, 2} }; Почему v выводиться как vector&lt;int&gt;

Как в vector<pair <класс, int> > добавлять свой объект в качестве первого элемента pair?
#include&lt;iostream&gt; #include &quot;Employee.h&quot; #include&lt;string&gt; #include&lt;algorithm&gt; #include&lt;vector&gt;...

Как назначить событию свой собственный обработчик?
Использую компонент TAdvStringGrid (из набора компонентов TMS). У него есть событие OnDblClickCell....

Свой собственный дизайн компонентов. В каком направлении двигаться и с чего начать?
Есть ли возможность в рамках билдера 10-го года создавать компоненты оформления приложений со своим...

Замена курсора на свой собственный
Привет. Нужен ответ на такой вопрос. Можно ли с помошью JavaScript сделать замену курсора на свой...


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

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

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