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

Проблемы с STL - C++

Восстановить пароль Регистрация
 
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
25.11.2012, 00:53     Проблемы с STL #1
Задание довольно таки большое. Суть в том, что есть экскурсии(однодневные и многодневные) и нужно всю информацию об этих экскурсиях свести в перемешанную таблицу(перемешивание сцеплением) Доступ осуществляется по коду экскурсии. Каждый элемент таблицы содержит указатель на описатель экскурсии.

Классы экскурсий, даты, времени и маршрута я написал. И я могу записать всю эту информацию в таблицу собственного изготовления, но задание, как я уже писал выше звучит так:
1)На основе описания задачи определить состав классов
2)Разработать иерархию классов и схему их взаимодействия
3)Для каждого класса определить его состояние и необходимые методы
4)Разработать и отладить все классы
5)Для разработки контейнерного класса(вместе с необходимыми итераторами) использовать STL
6)Повторить разработку контейнерного класса(вместе с необходимыми итераторами), используя собственные шаблоны классов

Первые четыре пункта я сделал без проблем. А вот на пятом я застопорился, и в интернетах ничего найти не могу. Как я понял, мне следует воспользоваться шаблонами <vector>+<list> или <multimap>, но как именно? Помогите пожалуйста)

Добавлено через 12 часов 18 минут
up!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 00:53     Проблемы с STL
Посмотрите здесь:

C++ STL
C++ STL
C++ STL в С++
STL C++
C++ STL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.11.2012, 01:12     Проблемы с STL #2
cks, что именно должен хранить контейнер? пару ключ-указатель?
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
25.11.2012, 13:44  [ТС]     Проблемы с STL #3
Цитата Сообщение от I.M. Посмотреть сообщение
cks, что именно должен хранить контейнер? пару ключ-указатель?
Ну как я понял, это будет массив из указателей на списки. А элемент списка - код, указатель на тур, указатель на следующий элемент списка
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.11.2012, 16:25     Проблемы с STL #4
Т.е. экскурсия - это список? и в массиве надо хранить указатели на экскурсии?
для массива есть std::vector
для списка есть std::list

Но вы забыли про требование: "Доступ осуществляется по коду экскурсии."
значит вместо std::vector надо использовать std::map
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
25.11.2012, 16:30  [ТС]     Проблемы с STL #5
Не - не. Экскурсия - это класс. Должна получится таблица, в которой элементами будут являться списки, а элемент списка - экскурсия.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.11.2012, 18:37     Проблемы с STL #6
и в чем тогда суть списка? чем отличаются списки, хранимые в разных ячейках массива?
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
25.11.2012, 20:15  [ТС]     Проблемы с STL #7
Ну смотри. Есть экскурсия и ее код.
1) Находим значение хэш функции от этого кода
2) Находим ячейку в таблице с этим значением
3) В этой ячейке есть указатель на список
4) Проходим весь список и записываем информацию в конец этого списка

То есть у нас есть таблица из списков. Элемент списка - код, указатель на экскурсию и указатель на следующий элемент списка
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.11.2012, 20:24     Проблемы с STL #8
экскурсия = уникальный идентификатор (код)
и у каждой экскурсии он свой, так?

Теперь мы имеем такие данные:
Экс1 Код1
Экс2 Код2
Экс3 Код3

Нам надо занести их в массив, который вы упорно называете таблицей
Считаем хеши, получаем:
Экс1 Код1 Хеш1
Экс2 Код2 Хеш2
Экс3 Код3 Хеш3

Дальше заносим данные в массив (он пустой):
Массив[Хеш1] = Список1 (Экс1) //т.е. в списке только один элемент - Экс1
Массив[Хеш2] = Список2 (Экс2) //т.е. в списке только один элемент - Экс2
Массив[Хеш3] = Список3 (Экс3) //т.е. в списке только один элемент - Экс3

Внимание вопрос, откуда вдруг у нас может появится следующее:
Экс4 Код1 Хеш1
Массив[Хеш1] = Список1 (Экс1, Экс4)
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
25.11.2012, 20:38  [ТС]     Проблемы с STL #9
У нас массив фиксированного размера - допустим 10. Пусть мы добавили 10 элементов с хэш1=1, хэш=2 и тд
Хотим добавить 11 элемент, у которого хэш11 получится допустим = 5. Тогда наша таблица станет выглядеть
Массив[Хэш1]->|Код1,Экс1,next->null|
...
Массив[Хэш5]->|(Код5,Экс5,next)->(Код11,Экз11,next)->null|
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.11.2012, 21:20     Проблемы с STL #10
А почему у нас массив фиксированного размера? что нам мешает сделать его динамическим? и что это за хеш такой бестолковый, который выдает 10 разных значений?
Эта система будет очень тормознутой на большом количестве записей.
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
26.11.2012, 02:11  [ТС]     Проблемы с STL #11
Это мое задание. Такая таблица называется перемешанной(перемешивание сцепление). Поиск элемента занимает О(1)

Добавлено через 31 минуту
Ну так что, никто не может помочь? Мне просто нужно узнать, КАК использовать. Все алгоритмы для такой таблицы легкие и я их знаю. Но как связать их с STL - не совсем понятно

Добавлено через 4 часа 17 минут
апну тему(
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
26.11.2012, 02:17     Проблемы с STL #12
Что Вам не понятно? Как использовать STL или как его "приляпать" к Вашей задаче?
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
26.11.2012, 02:24  [ТС]     Проблемы с STL #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Что Вам не понятно? Как использовать STL или как его "приляпать" к Вашей задаче?
И первое и, следовательно, второе. Возможно я смогу сделать второе сам, если узнаю первое))
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
26.11.2012, 02:38     Проблемы с STL #14
Скотт Мейерс - Эффективное использование STL.
И гугл многое найдет по данной теме.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
26.11.2012, 02:52     Проблемы с STL #15
cks, 2 варианта
1. если хеш - это число от 0 до 9 включительно
C++
1
2
3
std::array<std::list<excursion>, 10> table;
//или
std::vector<std::list<excursion>> table;
2. если хеш - какая-то строка
C++
1
std::map<std::string, std::list<excursion>> table;
О них можно почитать тут http://www.cplusplus.com/reference/ C++ Standard Library: Standard Template Library (STL)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2012, 12:28     Проблемы с STL
Еще ссылки по теме:

C++ STL
C++ STL
C++ STL

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

Или воспользуйтесь поиском по форуму:
cks
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 10
26.11.2012, 12:28  [ТС]     Проблемы с STL #16
Спасибо большое за помощь!
Yandex
Объявления
26.11.2012, 12:28     Проблемы с STL
Ответ Создать тему
Опции темы

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