Интересует размер 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";

person Chax    schedule 14.02.2014    source источник
comment
Документация не работает или что? qt-project.org/doc/qt-5.0/qtcore/qvector. html   -  person juanchopanza    schedule 14.02.2014
comment
Вы действительно думаете, что я не смотрел раньше? Я не нашел ответа, поэтому и спрашиваю... в любом случае спасибо. Кто-то еще получил ответ?   -  person Chax    schedule 14.02.2014
comment
Ответ находится в документации, которую я только что связал выше.   -  person juanchopanza    schedule 14.02.2014
comment
Где??? Я смотрю на это прямо сейчас ...   -  person Chax    schedule 14.02.2014
comment
Я новичок, поэтому некоторые слова не имеют смысла. Я нашел кое-что о значении по умолчанию, но это не то, что я ищу. Должен ли я искать в обычной библиотеке C++? Действительно ли Qvector отличается от вектора С++?   -  person Chax    schedule 14.02.2014
comment
Это зависит от варианта использования. Здесь есть SO-вопрос, связанный с этим: .com/questions/5623218/   -  person juanchopanza    schedule 14.02.2014


Ответы (2)


Из QVector документации:

QVector myQVector;

конструктор по умолчанию создает пустой QVector.

myQVector[121] = ....

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

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

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

Вы можете взглянуть на QMap, std::map или std::unordered_map.

person juanchopanza    schedule 14.02.2014
comment
Спасибо за ответ. Итак, я думаю, я собираюсь сделать QVector с другим QVector в нем. Я действительно ценю помощь, хотя. Извините, что побеспокоил вас нубским вопросом. Кстати, я бы проголосовал за ваш ответ, но кто-то проголосовал за мой вопрос... - person Chax; 14.02.2014
comment
@Chax Рад, что это помогло. Посмотрите на типы карт, которые я добавил в конце своего ответа. Они могут больше соответствовать вашим потребностям. - person juanchopanza; 14.02.2014

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

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

myMap[songId] = "song number 1 on cd 1";
person Sebastian Negraszus    schedule 14.02.2014