Почему очередь ограничена? Почему бы не использовать динамически расширяемую структуру данных? Это кажется намного проще, чем использование диска.
Edit:
Трудно ответить на ваш вопрос без дополнительного контекста.
Можете ли вы уточнить, что вы подразумеваете под "нехваткой памяти"? Насколько велика очередь? Сколько у тебя памяти?
Вы используете встроенную систему с очень небольшим объемом памяти? Или у вас 2 или более ГБ в очереди?
Если любое из них истинно, вам действительно следует использовать «заменяемую» структуру данных, например BTree. Реализация одного за одну очередь кажется излишним. Я бы просто использовал встроенную базу данных, такую как SQL lite.
Если ни один из них не является истинным, тогда просто используйте вектор или связанный список.
Редактировать 2:
Вам, вероятно, не нужен BTree или база данных. Вы можете просто использовать связанный список страниц. Но опять же
Я должен спросить: это необходимо?
Или, если вы готовы обрабатывать вещи не по порядку, почему бы не иметь несколько потоков для чтения все время?
В конечном счете, хотя я не думаю, что ваше предложение - это путь.