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

Реализовать упрощенный контейнер "вектор" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
cetrael
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
10.05.2012, 23:05     Реализовать упрощенный контейнер "вектор" #1
Да, знаю, что тема избитая, но:
Стоит такой вопрос "Чем отличается шаблонный класс от контейнера в данном случае - Реализовать шаблон класса vector, реализующий динамический массив, но в первом случае, как шаблонный класс, а во втором, как контейнер с итератором самописным"?
Сделал шаблонный класс, чем должен отличаться контейнер?
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
#include <iostream>
using namespace std;
 
template <class T>
class vector
{
    T *arr;
    unsigned int size;
    int index;
public:
    vector() : size(0), index(), ms(NULL) {}
    vector(unsigned int size)
    {
        vector::size = size;
        vector::arr = new T[size];
        vector::index = 0;
    }
    ~vector()
    {
        if(arr)
        delete [] arr;
    }
    int add(T value)
    {
        if(index == size)
            return 0;
        else
        {
            arr[index] = value;
            index++;
        }
        return 1;
    }
    void show()
    {
        if(size == 0)
            cout << "Vector is empty" << endl;
        for(int i = 0; i < index; i++)
            cout << arr[i] << " ";
        cout << endl;
    }
    bool del(unsigned int num)
    {
        if(num > index)
        {
            cout << "Vector doesn't contains such amount of elements";
            return 0;
        }
        else if(num == index)
        {
            size = 0;
            delete [] arr;
            return 0;
        }
        else
        {
            T *temp;
            temp = new T[size - num];
            for(int i = num, j = 0; i < index; i++, j++)
                temp[j] = arr[i];
            delete [] arr;
            arr = new T[index - num];
            for(int i = 0; i < index - num; i++)
                arr[i] = temp[i];
            delete [] temp;
            vector::index -= num; 
        }
    }
 
};
 
int main ()
{
    vector<int> lol(12);
    lol.add(2);
    lol.add(2);
    lol.add(3);
    lol.add(4);
    lol.add(5);
    lol.show();
    lol.del(3);
    lol.show();
 
    return 0;
 
}
Добавлено через 42 минуты
апдт.

Добавлено через 1 час 19 минут
Всё ещё актуально :C
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2012, 23:05     Реализовать упрощенный контейнер "вектор"
Посмотрите здесь:

C++ Написать класс "вектор на плоскости" заданный в системе декартовых координат
Реализовать класс - "Троичный вектор" C++
Динамическая структура данных(контейнер) типа "Вектор" C++
Нужно разработать класс "вектор" и реализовать операцию векторного умножения векторов C++
C++ Класс "Вектор", меню для демонстрации его возможностей
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
10.05.2012, 23:48     Реализовать упрощенный контейнер "вектор" #2
ну контейнером может называться любой класс который содержит в себе элементы...

Цитата Сообщение от cetrael Посмотреть сообщение
в первом случае, как шаблонный класс, а во втором, как контейнер с итератором самописным
вопрос из разряда "хочу 1 машину красного цвета, и 2ую чтобы там был кондей и подушка..."

про итераторы:
http://www.darkraha.com/rus/cpp/stl/stl08.php
cetrael
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
12.05.2012, 23:41  [ТС]     Реализовать упрощенный контейнер "вектор" #3
Цитата Сообщение от OstapBender Посмотреть сообщение
ну контейнером может называться любой класс который содержит в себе элементы...


вопрос из разряда "хочу 1 машину красного цвета, и 2ую чтобы там был кондей и подушка..."

про итераторы:
http://www.darkraha.com/rus/cpp/stl/stl08.php
Если честно, не совсем понял, что имелось в виду.
Я взял и допилил к своему шаблонному классу итератор. Теперь у меня тот же класс, но с итератором :C
Задание звучит так: сделать вектор, реализующий динамический массив, в первом случае, как ШК, а во втором как контейнер. На чем они акцентировались, и что они от меня хотят :C
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
13.05.2012, 03:16     Реализовать упрощенный контейнер "вектор" #4
Думаю важно что бы контейнер был обормлен как стандартный и был совместим с стандартными алгоритмами, биндами и тп.

Ну там есть еще вещь такая как аллокатор, но то мелочь...
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 09:22     Реализовать упрощенный контейнер "вектор" #5
Естественно, что STL vector был построен на шаблонном классе!
Ну вы можете проделать это ещё раз
Шаблонный класс вектора работает на динамическом массиве (на сколько я помню)
http://www.cplusplus.com/reference/stl/ О контейнерах в с++
Задание не корректно, с моей точки зрения, особенно та фраза "реализующий динамический массив", массив чего? Если не
известно чего, тогда он тоже шаблонный =)
Ещё есть 1 вариант: Под ШК подразумевают положить вверх, положить вниз, удалить сверху , удалить снизу, ну или что то в этом роде
Хотя тот же map уже дерево
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.05.2012, 12:39     Реализовать упрощенный контейнер "вектор" #6
....................
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 12:57     Реализовать упрощенный контейнер "вектор" #7
хм... я перечитал ваш вопрос и пришёл к выводу, что в случае контейнера от вас хотят, чтобы каждому индексу динамического массива соответсвовал итератор (произвольное 32 битное значение) и например, удаление происходит только по итератору
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
13.05.2012, 17:15     Реализовать упрощенный контейнер "вектор" #8
Хотя тот же map уже дерево
Это почему? по тому что сортируют?
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 17:34     Реализовать упрощенный контейнер "вектор" #9
Простите, std::map - это, как правило, контейнер с реализацией при помощи красно-чёрного дерева, разве я ошибаюсь? (STL)
http://www.youtube.com/watch?feature...v=vDHFF4wjWYU#!
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
13.05.2012, 17:41     Реализовать упрощенный контейнер "вектор" #10
Ternsip, std::map
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 17:47     Реализовать упрощенный контейнер "вектор" #11
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ternsip, std::map
1)Безобразие, смотрите выше я кидал ссылку (http://www.cplusplus.com/reference/stl/)
2)К чему вы мне кинули эту ссылку?
3)Под своей фразой я подразумевал, что массив упорядочен и хранится при помощи красно-чёрного дерева
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
13.05.2012, 17:49     Реализовать упрощенный контейнер "вектор" #12
Цитата Сообщение от Ternsip Посмотреть сообщение
К чему вы мне кинули эту ссылку?
Где вы там хоть слово увидели о дереве? Данные хранятся парами, содержащей ключ и значение.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 18:08     Реализовать упрощенный контейнер "вектор" #13
Цитата Сообщение от Toshkarik Посмотреть сообщение
Где вы там хоть слово увидели о дереве? Данные хранятся парами, содержащей ключ и значение.
Ну прошу вас, не пугайте меня... откуда там напишут как хранятся и упорядочиваются данные ?
Это мы управляем парами . добавляем пары, получаем пары (Кстати уже от итераторов)

http://ru.wikipedia.org/wiki/%D0%9A%...B5%D0%B2%D0%BE

Посмотрите там раздел Работа с красно-чёрными деревьями и убедитесь

Цитирую по ссылке :
Красно-чёрные деревья являются одними из наиболее активно используемых на практике самобалансирующихся деревьев поиска. В частности, контейнер map в большинстве реализаций библиотеки STL языка C++[1], класс TreeMap языка Java[2], так же, как и многие другие реализации ассоциативного массива в различных библиотеках, основаны на красно-чёрных деревьях.

В случае несогласия, прошу окончить священную войну
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
13.05.2012, 18:12     Реализовать упрощенный контейнер "вектор" #14
Где вы там хоть слово увидели о дереве? Данные хранятся парами, содержащей ключ и значение.
Хранятся так что бы была максимальная скорость выборки на основе ключей.
И это поидее можно сделать с помощью дерева, но неуверен что там именно так реализовано
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 18:13     Реализовать упрощенный контейнер "вектор"
Еще ссылки по теме:

Структура "Автомобиль". Контейнер "Рынок б/у автомобилей" C++
C++ "Морской бой": массив указателей на объекты vs контейнер stl. Что лучше?

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

Или воспользуйтесь поиском по форуму:
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
13.05.2012, 18:13     Реализовать упрощенный контейнер "вектор" #15
Цитата Сообщение от Avazart Посмотреть сообщение
И это поидее можно сделать с помощью дерева, но неуверен что там именно так реализовано
Я про то же, возможно, это зависит от реализации компилятора.
Yandex
Объявления
13.05.2012, 18:13     Реализовать упрощенный контейнер "вектор"
Ответ Создать тему
Опции темы

Текущее время: 01:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru