Если вам действительно нужно, то я бы сделал что-то вроде:
QVector< QVector<T> > vectors = QVector< QVector<T> >();
int totalSize = 0;
for (int i = 0; i < vectors.size(); ++i)
totalSize += vectors.at(i).size();
QVector<T> collected;
collected.reserve(totalSize);
for (int i = 0; i < vectors.size(); ++i)
collected << vectors[i];
Но учтите, что это немного похоже на преждевременную оптимизацию. Как документация указывает:
QVector пытается уменьшить количество перераспределений, предварительно выделяя вдвое больше памяти, чем необходимо фактическим данным.
Так что не делайте такого рода вещи, если вы действительно не уверены, что это улучшит вашу производительность. Сохраняйте это простым (как ваш нынешний способ сделать это).
Отредактируйте в ответ на ваше дополнительное требование O (1):
Хорошо, если вы вставляете случайным образом, это связанный список , но если вы просто добавляете (как это все, что вы упомянули), вы уже получили амортизированный O (1) с QVector. Посмотрите документацию для контейнеров Qt .