Итак, у меня есть возрастающая последовательность объектов (я могу с успехом преобразовать каждый объект в уникальные числа, возможно, из диапазона более 32 бит). Поэтому без ограничения общности предположим, что у меня есть последовательность int_64. Что вы делаете, если у вас есть последовательность, длина которой превышает size_t, и вам нужно работать с ней, как если бы вы работали с (неупорядоченными) наборами (т. Е. Выполняли поиск и избегали дубликатов, но упорядочение не имеет большого значения). Раньше я работал с повышения :: unordered_set но это имеет MAX_SIZE, который size_t .. есть возможность иметь контейнер (или даже расширить подталкивания :: unodered_set) таким образом, что он может содержать более size_t элементов ? Если последовательность слишком велика, было бы более эффективным, если бы я только сохранил последовательность в файле и выполнил поиск в файле?(неупорядоченный) контейнер, который имеет длину, превышающую size_t в C++
ответ
Предел контейнера - это небольшая красная сельдь: ваша система сначала запустит адресное пространство.
Если вы хотите получить библиотеку, в stxxl есть контейнеры с поддержкой дисков. Или просто используйте базу данных sql или другого типа.
Если бы я был, и я не мог реализовать свою собственную базу данных или stxxl, я бы хэш до меньшего размера (скажем, 24 бит) и держать до N элементов непосредственно там. Когда вам нужно знать размер или элементы памяти заполнены, вы читаете таблицу на диске для этого 24-битного хэша.
Возможно фьючерсы на фьючерсы, чтобы рассчитать полный размер, позволяя получить доступ к асинхронному диску для обновления значений и узлов 2^24.
Да, это более или менее то, о чем я думал. Более или менее вам придется создавать свою собственную структуру данных. Конечно, stxxl - это вариант, но он также поддерживает наборы? – quantum
- 1. Как обрезать строку, превышающую длину элемента?
- 2. «std :: size_t» имеет смысл в C++?
- 3. C# Regex шаблон матч, который имеет переменную длину
- 4. Неупорядоченный контейнер с несколькими ключами/значениями
- 5. AsyncFileUpload: Как скрыть максимальную длину запроса, превышающую предупреждение?
- 6. Производительность size_t в C++
- 7. ПРОГР, который печатает длину строки в C
- 8. C size_t не печатает в Printf
- 9. Почему padding-left в текстовом поле имеет ширину, превышающую 100%
- 10. C++ определить, если контейнер имеет :: найти()
- 11. C# array всегда имеет длину 0
- 12. HTML неупорядоченный список имеет пули наполовину скрытые
- 13. C++ строка size_t
- 14. C++ самообучающийся стандарт: size_t
- 15. Размер структуры - size_t в c
- 16. C++ size_t или ptrdiff_t
- 17. C++ function "size_t PASCAL"
- 18. в C, fwrite() 'size_t size "и" size_t n items "confusion
- 19. Div, который меняется в длину
- 20. C++ Неупорядоченный список Пример
- 21. Выберите первый ребенок в DIV, который имеет контейнер
- 22. Аргумент имеет нулевую длину
- 23. Имеет ли контейнер std общий способ вставки в любой контейнер?
- 24. Функция C++ ожидает параметры size_t
- 25. , представляющий объект, который имеет переменную длину категорий и подкатегорий
- 26. Fragment.onCreateView имеет пустой контейнер
- 27. Как создать обычный шаблон, который имеет фиксированную длину 30 charator?
- 28. не может преобразовать параметр из 'SIZE_T *' в 'size_t *' - как сделать?
- 29. Найти пары ключ-значение с ключом, который имеет длину 4
- 30. выравнивают неупорядоченный список предметов
Что именно ваша проблема? эффективность? какие операции необходимо выполнять для ваших данных? –
моя проблема в том, что обычные контейнеры, с которыми я имею дело: например. std :: set, boost :: unordered_set и т. д. имеют max_size, который не превышает определенной суммы (скажем, max значения int_32), но у меня есть данные с числом значений, которое больше этой суммы, и мне нужен контейнер для этого данные. – quantum
Зачем вам нужен тип 'set'? как насчет использования обычного «вектора»? –