Хотите знать о размере QVector

Просто случайный вопрос, с которым я столкнулся.

Если я позвоню myQVector[121] но это QVector не имеет элемента в нем, это создает 121 пространство в этом QVector или это только создать пространство с именем 121 в нем?

Я хочу знать, потому что я создаю библиотеку для моего компакт-диска (нужен проект для изучения), и я хочу сделать вектор возможным для мульти-компакт-альбома.

Что я имею в виду

QVector myQVector;

myQVector[121] = "song number 1 on cd 1";
myQVector[122] = "song number 2 on cd 1";
myQVector[211] = "song number 1 on cd 2";
myQVector[322] = "song number 22 on cd 3";

-1

Решение

От QVector документация:

QVector myQVector;

конструктор по умолчанию строит пустой QVector,

myQVector[121] = ....

operator[](int(i) имеет условие

i должна быть допустимой позицией индекса в векторе (т.е. 0 <= i < size()).

Так зовет myQVector[121] не удовлетворяет условиям.

Вы можете посмотреть на QMap, std::map или же std::unordered_map.

0

Другие решения

Нет, он не увеличивает автоматически размер (количество элементов) QVector. Вместо этого ваше приложение будет зависать, потому что вы пытаетесь получить доступ к неверному индексу.

Но список / вектор, похоже, не являются правильной структурой данных здесь. Я считаю, что вы действительно хотите QMap, где вы можете присвоить значение ключу:

myMap[songId] = "song number 1 on cd 1";
0

По вопросам рекламы [email protected]