Я попытался добавить 100 000 элементов QString (каждая QString имеет около 10 символов) в QVector. После этого программа выходит из строя. Существуют ли некоторые ограничения на количество элементов, которые может содержать QVector (помимо физических ограничений памяти)? Кроме того, я думаю, что у вас много свободной памяти, достаточно, чтобы хранить такую связку строк. Что я делаю не так?Максимальный размер для QVector?
1
A
ответ
1
Попробуйте использовать QStringList в качестве рекомендации. Я сомневаюсь, что 100 тыс. Строк будут проблемой памяти.
QStringList tlist;
for(int i=0;i<100000;i++)
tlist.append("1234567890");
работает совершенно нормально в моей среде
2
Из документации.
Класс QVector шаблонный класс, который обеспечивает динамический массив ... Она хранит свои элементы в смежных ячейках памяти и обеспечивает быстрый доступ по индексу.
Зная это лучший способ добавляемых большое количество элементов для резервирования памяти либо с помощью
QVector<QString> vector(100000);//or
vector.reserve(100000);
Это позволяет избежать перемещения в несколько раз память.
Количество элементов ограничено лимитом int (около 2 миллиардов). Ваша проблема будет в размере того, что вы вкладываете в нее. Или некоторые проблемы с копированием того, что вы вкладываете в него. – paulm
Можете ли вы показать минимальный пример неудачного кода? И, кстати, [QList обычно рекомендуется по QVector] (http://qt-project.org/doc/qt-5.0/qtcore/containers.html#the-container-classes). –
показать код, избегать спекуляций. Btw более подробно объясните, какой вид сбоя вы наблюдаете – UmNyobe