std::vector::size() возвращает size_type без знака и обычно то же самое, что и size_t, например. это 8 байтов на 64-битных платформах.
В constrast QVector::size() возвращает int, который обычно составляет 4 байта даже на 64-битных платформах, и при этом он подписан, что означает, что он может идти только на половину до 2 ^ 32.
Почему? Это кажется довольно нелогичным, а также технически ограничивающим, и хотя и не очень вероятно, что вам может понадобиться больше, чем 2 ^ 32 числа элементов, использование подписанных сокращений int, которые варьируются пополам без видимых веских причин. Возможно, чтобы избежать предупреждений компилятора для людей, слишком ленив объявить i как uint, а не int, который решил, что все контейнеры возвращают тип размера, который не имеет смысла, является лучшим решением? Причина не может быть такой глупой?