Как узнать есть ли индекс в QList?

230
22 августа 2017, 13:56

Узнать есть ли значение 3 функции, а есть ли индекс в QList<int> не понятно

 QList<int> ppc;
 ppc[0]=100;
 ppc[1]=200;
 ppc[2]=300;
 ppc[3]=400;
 int res = ppc.at(4);

Конечно вылазит окно ошибки, а как узнать есть ли ключ в списке не понятно, должна же быть там функция.

Answer 1

Понятие ключа относится к словарям (dict, map), а у списком, массивов и множеств (list, array, set) доступ к элементам осуществляется через индекс, который начинается от 0 до <размер - 1> или от 1 до размер.

Поэтому, чтобы проверить наличие индекса, нужно обратиться к размеру и сравнить размер с индексом.

У QList для проверки размера есть аж 3 идентичных функции: count, size и length.

Для вашего примера нужно добавить проверку:

int index = 4;
// Для индексации от 0 до n - 1
// А для индексации от 0 до n, проверка изменится на: index <= ppc.size()
if (index < ppc.size()) {
    int res = ppc.at(index); // или ppc[index]
}

QList при неправильном индексе исключение не кидает (так исторически сложилось в Qt), но, например, в java есть ArrayIndexOutOfBoundsException, а у python это IndexError.

Тогда, вместо проверки можно ловить исключение, например тогда код с проверкой изменился бы на что-то такое:

int index = 4;
try {
    int res = ppc.at(index);
} catch (IndexError) {
    // ignore
}
READ ALSO
Вопрос по циклу for

Вопрос по циклу for

Каким образом производится проверка на истинность j<=(i/j) , ведь по условию выходит, что j всегда будет большеНапример j=2 ; (i/j)=(2/2)=1 --->>> Выходит...

278
Убрать все товары с mixitup

Убрать все товары с mixitup

Доброго времени суток, подскажите пожалуйста как убрать появления всех элементов при загрузке страницы в mixitup и что бы сразу активировался...

335
Карта на сайт (Не google)

Карта на сайт (Не google)

Всем доброго времени сутокДелаю некое подобие карты и столкнулся с проблемой

289