Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разряженные вектора и двойная ­ структура 
:(
    Опции темы
Гость_Гость
Дата 23.10.2005, 15:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Задача: Нужно создать класс для реализации множества элементов, которые являются разряженными векторами размерности n, с операцией добавления, удаления, проверки наличия элемента, объединения, пересечения и сравнения множест.

Вопрос: Как лучше организовать поиск на пересе. объединение и т.д? Если у нас вектор разряженный, то будет большое количество нулей. Можно создать доп. массивы, что то наподобие индексных, которые будут указывать не на 0-вые знач. векторов, и сравнивать уже через них.
И еще как лучше организовать сам вектор, в виде массива в классе или делать связанные списки, хотя если использовать доп. массивы и в носить туда адреса наших узлов, то связями мы так то и пользоваться не будем?

И еще, если нужно реализовать двойную структуру данных для поиска по разным ключам.

Хотелось бы по конкретнее узнать что такое двойная структура, единственное, что я нашел в инете - это то что она напоминает двумерный массив, это действительно так?
Просто если это так, то причем здесь поиск по разным ключам, все равно мы должны будем использовать оба совмествно.
  Вверх
Earnest
Дата 23.10.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Разреженный массив проще всего реализовать на основе std::map или std::hash_map. Соответственно, ключ = индекс. Все требуемые операции реализуются элементарно, методами map или алгоритмами STL. Для не-выхода за пределы размерности нужно принять специальные меры.
Если, по каким-то причинам тебе нельзя использовать STL, нарисуй hash_map сам (посмотри в той же STL и сделай аналогично, упростив под свою задачу, конечно). Хороший чужой код - лучший учебник.

Для поиска по разным ключам чаще всего организуют разные индексы и все.
Можно поместить их в один класс и назвать двойным индексом, но это просто слова. "Двойная структура" тоже просто слова, и могут использоваться в разных контекстах.



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1029 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.