Масштабируемый stl, подобный контейнеру для C ++ - PullRequest
2 голосов
/ 03 июня 2010

Мне нужно хранить большое количество целых чисел. Может быть дубликаты во входном потоке целых чисел, мне просто нужно хранить отличные среди них. Я изначально использовал STL, но он вышел OutOfMem, когда количество вводимых целых чисел слишком велико. Я ищу некоторую библиотеку контейнера C ++, которая бы позвольте мне хранить номера с указанным требованием возможно подкрепленный файлом, т.е. контейнер не должен пытаться сохранить все числа в памяти. Мне не нужно хранить эти данные постоянно, мне просто нужно найти уникальные ценности среди них.

Ответы [ 4 ]

1 голос
/ 03 июня 2010

Посмотрите на STXXL ; может быть то, что вы ищете.

Редактировать: я не использовал его сам, но из документов - вы могли бы использовать stream::runs_creator для создания отсортированных прогонов ваших данных (сколько бы памяти не помещалось в памяти), затем stream::runs_merger для объединения отсортированных потоков и наконец, используйте stream::unique для фильтрации уникальных.

0 голосов
/ 27 июля 2010

Вы должны серьезно хотя бы попробовать базу данных, прежде чем сделать вывод, что она слишком медленная. Все, что вам нужно, это один из легких хранилищ ключей. В прошлом я использовал Berkeley DB, но вот список других .

0 голосов
/ 03 июня 2010

Рассматривали ли вы использование БД (возможно, SQLite )? Или это будет слишком медленно?

0 голосов
/ 03 июня 2010

Так как вам нужно больше, чем позволяет RAM, вы можете посмотреть на memcached

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...