Есть ли максимальный размер для QVector?

Я попытался добавить 100 000 элементов QString (каждый QString содержит около 10 символов) в QVector. После этого программа не работает. Существуют ли ограничения на количество элементов, которые может содержать QVector (помимо физических ограничений памяти, конечно)? Кроме того, я думаю, что у меня много свободной памяти, достаточно для хранения такого количества строк. Что я делаю неправильно?

2 ответа

Из документации.

Класс QVector - это шаблонный класс, который предоставляет динамический массив... Он хранит свои элементы в смежных областях памяти и обеспечивает быстрый доступ на основе индекса.

Зная это, лучший способ добавить большое количество элементов - зарезервировать в память либо используя

QVector<QString> vector(100000);//or 
vector.reserve(100000);

Это позволяет избежать перемещения в несколько раз памяти.

Попробуйте использовать QStringList в качестве подсказки. Я сомневаюсь, что 100k строк будут проблемы с памятью.

QStringList tlist;
for(int i=0;i<100000;i++) 
    tlist.append("1234567890");

работает абсолютно нормально в моей среде

Из документации QVector для Qt 5.14.2:

Текущая версия QVector ограничена размером чуть менее 2 ГБ (2^31 байт).

Другие вопросы по тегам