|
6 / 6 / 0
Регистрация: 28.07.2010
Сообщений: 12
|
|
Разбор массивов/контейнеров28.07.2010, 21:53. Показов 10495. Ответов 39
Метки нет (Все метки)
Только начинаю изучть с++, необходимо сделать 2 ассоциативных динамических массива и походу сразу разобраться что да как.
Задача такова, первый массив в пике будет достигать ~300 тыс элементов. Добавление, удаление и поиск элементов по ключу будет производиться ~ 200 раз в минуту. Полное считывание массива будет происходить ~ один раз в 5 минут. При этом в сортировке нет необходимости Второй массив такойже, только элементов около 100 тыс и с сортировкой. Сортировать массив можно сразу по ходу добавления элементов, либо при выводе. Наверно я придержусь второго варианта. Такая вот задача. Нужно разобраться как это сделать оптимальнее. Тут я обратил внимание на библиотеку STL Вот всё, что мне удалось найти: - vector: C-подобный динамический массив произвольного доступа с автоматическим изменением размера при добавлении/удалении элемента. - list: Двусвязный список, элементы которого хранятся в произвольных кусках памяти, в отличие от контейнера vector, где элементы хранятся в непрерывной области памяти. Поиск перебором медленнее, чем у вектора из за большего времени доступа к элементу. Доступ по индексу за O(n). В любом месте контейнера вставка и удаление производятся очень быстро - за O(1). - deque: Контейнер похож на vector, но с возможностью быстрой вставки и удаления элементов на обоих концах за O(1). Реализован в виде двусвязанного списка линейных массивов. - set: Упорядоченное множество уникальных элементов. При вставке/удалении элементов множества итераторы, указывающие на элементы этого множества, не становятся недействительными. - multiset: о же что и set, но позволяет хранить повторяющиеся элементы. - map: Упорядоченный ассоциативный массив пар элементов, состоящих из ключей и соответствующих им значений. Ключи должны быть уникальны. Порядок следования элементов определяется ключами. - multimap: То же что и map, но позволяет хранить несколько одинаковых ключей. Больше я описания не нашёл. В моём случае необходимо чтобы массив удовлетворял следующим условиям: 1. Был динамичен 2. Не сортировался 3. Элементы должны хранится в произвольных кусках памяти, как у list. Я так понял в моём случае это оптимальнее. 4. Был ассоциативный и содержал только уникальные ключи, значит либо set, либо map. Кто работал с подобным массивом, подскажите оптимальный способ или просто своё мнение. Всем спасибо.
1
|
|
| 28.07.2010, 21:53 | |
|
Ответы с готовыми решениями:
39
Разработка программы с использованием контейнеров-массивов Обработка массивов структур с использованием контейнеров Разбор задачи на построение массивов |
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 01.08.2010, 21:16 | |
|
0
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||
| 01.08.2010, 21:17 | ||||||
1
|
||||||
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 01.08.2010, 21:18 | |
|
Всё, спасибо, только-что понял
0
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
| 01.08.2010, 21:19 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 01.08.2010, 21:29 | |
|
Да, я где-то читал что при заполнении первого массива создаётся второй в два раза больше и так далее...
Я так понял что тут впринципе возможны две реализации - массив занимает непрерывный блок памяти (vector) и когда элементы просто разбросаны по всей памяти (list). Отсуюда разные недостатки.... к какому типу тогда относится map? Может простой ассоциативный массив можно организовать проще, не через map? Мне посути никаких сложных операций с ним делать не нужно, только класть/удалять значения и иногда считывать масив целиком. Главное чтобы была максимальная производительность.
0
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||
| 01.08.2010, 21:33 | ||||
|
1
|
||||
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 01.08.2010, 21:35 | |
|
Это не форум...но спорить не буду, удалил.
Спасибо.
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|||||||
| 15.08.2010, 22:29 | |||||||
|
Подскажите как записать содержимое map в файл. Вот делаю так:
Подскажите, что делаю не так?
0
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 15.08.2010, 22:42 | ||||||
|
Kadet89, Гм...
А если так?
0
|
||||||
|
17 / 17 / 2
Регистрация: 02.05.2010
Сообщений: 122
|
||||||
| 15.08.2010, 23:01 | ||||||
|
Kadet89, как у Вас написано я тоже пробывала,
но реально работает такой вариант это уменя телефонный справочник на векторе был
0
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 15.08.2010, 23:04 | ||||||
|
Простой вариант:
0
|
||||||
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 16.08.2010, 00:28 | |
|
Lavroff, выглядит непросто, все строки для меня новые... можете прокомментировать с 11 по 17 что в них выполняется пожалуйста
0
|
|
|
17 / 17 / 2
Регистрация: 02.05.2010
Сообщений: 122
|
|
| 16.08.2010, 00:34 | |
|
помоему происходит то что Вы и хотели
при помощи итератора данные контейнера записываются в файл
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|||||||
| 16.08.2010, 01:08 | |||||||
|
Вот я подписал строки, которые понимаю:
0
|
|||||||
|
2 / 2 / 0
Регистрация: 18.09.2009
Сообщений: 107
|
|
| 16.08.2010, 01:20 | |
|
niXman не сохранил я последнюю версию с сохранением в файл, думал будет храниться как картинка на радикале, несколько лет
0
|
|
|
|
|
| 16.08.2010, 01:26 | |
|
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 16.08.2010, 02:06 | ||||||
1
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 16.08.2010, 02:20 | |
|
niXman, М. Показываю ТС пример записи контейнера типа map в файл. А если точнее, то пример записи second из map.
0
|
|
| 16.08.2010, 02:20 | |
|
Пересечение контейнеров обход контейнеров Синхронизация контейнеров (STL) Объединение двух контейнеров
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской)
Options
Preferences
General
Language
|
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент".
В данной функции нет апострофов,. . .
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|