Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93

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

10.05.2012, 23:05. Показов 5220. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Да, знаю, что тема избитая, но:
Стоит такой вопрос "Чем отличается шаблонный класс от контейнера в данном случае - Реализовать шаблон класса 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
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2012, 23:05
Ответы с готовыми решениями:

Реализовать функцию-шаблон, принимающую произвольный контейнер и формирующую вектор
Реализовать функцию-шаблон, принимающую произвольный контейнер a и формирующую вектор b (результат функции) в соответствии с заданием. ...

Реализовать упрощённый вариант стека
Здравствуйте! Пожалуйста, помогите справиться с задачей!!! Дано задание: &quot;Реализовать упрощённый вариант стека –структуры, где всегда...

контейнер -вектор вложеный в вектор
Помогите, пожалуйста найти ошибку. Есть строка типа string - обычное предложение из слов, разделённые пробелами. Мне нужно записать это...

14
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
10.05.2012, 23:48
ну контейнером может называться любой класс который содержит в себе элементы...

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

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


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

про итераторы:
http://www.darkraha.com/rus/cpp/stl/stl08.php
Если честно, не совсем понял, что имелось в виду.
Я взял и допилил к своему шаблонному классу итератор. Теперь у меня тот же класс, но с итератором :C
Задание звучит так: сделать вектор, реализующий динамический массив, в первом случае, как ШК, а во втором как контейнер. На чем они акцентировались, и что они от меня хотят :C
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 03:16
Думаю важно что бы контейнер был обормлен как стандартный и был совместим с стандартными алгоритмами, биндами и тп.

Ну там есть еще вещь такая как аллокатор, но то мелочь...
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 09:22
Естественно, что STL vector был построен на шаблонном классе!
Ну вы можете проделать это ещё раз
Шаблонный класс вектора работает на динамическом массиве (на сколько я помню)
http://www.cplusplus.com/reference/stl/ О контейнерах в с++
Задание не корректно, с моей точки зрения, особенно та фраза "реализующий динамический массив", массив чего? Если не
известно чего, тогда он тоже шаблонный =)
Ещё есть 1 вариант: Под ШК подразумевают положить вверх, положить вниз, удалить сверху , удалить снизу, ну или что то в этом роде
Хотя тот же map уже дерево
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
13.05.2012, 12:39
....................
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 12:57
хм... я перечитал ваш вопрос и пришёл к выводу, что в случае контейнера от вас хотят, чтобы каждому индексу динамического массива соответсвовал итератор (произвольное 32 битное значение) и например, удаление происходит только по итератору
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 17:15
Хотя тот же map уже дерево
Это почему? по тому что сортируют?
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 17:34
Простите, std::map - это, как правило, контейнер с реализацией при помощи красно-чёрного дерева, разве я ошибаюсь? (STL)
http://www.youtube.com/watch?f... HFF4wjWYU#!
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
13.05.2012, 17:41
Ternsip, std::map
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 17:47
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ternsip, std::map
1)Безобразие, смотрите выше я кидал ссылку (http://www.cplusplus.com/reference/stl/)
2)К чему вы мне кинули эту ссылку?
3)Под своей фразой я подразумевал, что массив упорядочен и хранится при помощи красно-чёрного дерева
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
13.05.2012, 17:49
Цитата Сообщение от Ternsip Посмотреть сообщение
К чему вы мне кинули эту ссылку?
Где вы там хоть слово увидели о дереве? Данные хранятся парами, содержащей ключ и значение.
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 18:08
Цитата Сообщение от Toshkarik Посмотреть сообщение
Где вы там хоть слово увидели о дереве? Данные хранятся парами, содержащей ключ и значение.
Ну прошу вас, не пугайте меня... откуда там напишут как хранятся и упорядочиваются данные ?
Это мы управляем парами . добавляем пары, получаем пары (Кстати уже от итераторов)

http://ru.wikipedia.org/wiki/%... 0%B2%D0%BE

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

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

В случае несогласия, прошу окончить священную войну
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.05.2012, 18:12
Где вы там хоть слово увидели о дереве? Данные хранятся парами, содержащей ключ и значение.
Хранятся так что бы была максимальная скорость выборки на основе ключей.
И это поидее можно сделать с помощью дерева, но неуверен что там именно так реализовано
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
13.05.2012, 18:13
Цитата Сообщение от Avazart Посмотреть сообщение
И это поидее можно сделать с помощью дерева, но неуверен что там именно так реализовано
Я про то же, возможно, это зависит от реализации компилятора.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2012, 18:13
Помогаю со студенческими работами здесь

Контейнер вектор
Только начал изучать вектора, столкнулся с проблемой в 1 задании - В контейнере типа vector хранится набор целых чисел. Создайте...

БД.Контейнер - Вектор.
Условие: Написать программу для решения задачи. Для хранения данных использовать контейнер. В качестве контейнера использовать...

Контейнер вектор
Только начал изучать вектора, столкнулся с проблемой в 1 задании - В контейнере типа vector хранится набор целых чисел. Создайте...

Контейнер-вектор
Используя контейнер-вектор, его алгоритмы и итераторы, решите задачи: a. Каждый элемент разделить на минимальный элемент контейнера b....

Класс-контейнер вектор
как в векторе определить является ли сумма элементов простым числом??


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru