Просто случайный вопрос, с которым я столкнулся.
Если я позвоню 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";
QVector myQVector;
конструктор по умолчанию строит пустой QVector
,
myQVector[121] = ....
operator[](int(i)
имеет условие
i
должна быть допустимой позицией индекса в векторе (т.е.0 <= i < size()
).
Так зовет myQVector[121]
не удовлетворяет условиям.
Вы можете посмотреть на QMap
, std::map
или же std::unordered_map
.
Нет, он не увеличивает автоматически размер (количество элементов) QVector. Вместо этого ваше приложение будет зависать, потому что вы пытаетесь получить доступ к неверному индексу.
Но список / вектор, похоже, не являются правильной структурой данных здесь. Я считаю, что вы действительно хотите QMap, где вы можете присвоить значение ключу:
myMap[songId] = "song number 1 on cd 1";