Pull to refresh

Comments 11

начиная с Qt6 QList == QVector.

До Qt6 QList это хитромудрёный index-based массив. Не припомню чтобы он был схож по функционалу с std::list

QList - более расширенный чем std::list

Только это неправда.

QList ведёт себя как std::vector<T> для объектов небольшого размера (меньше указателя)

или как std::vector<std::unique_ptr<T>> для объектов больше указателя.

Результат: элементы в диапазоне от [first, last] удалятся и вставятся [iterator, iterator + last]

В с++ диапазоны обычно не включают правую границу, в документации указан диапазон [first, last).

А указывать тип в качестве начала диапазона вообще нельзя.

Да, вы правы сейчас уберу этот пассаж про QList

Статью я под LeetCode писал, как там обрабатывать исключение в форме: std::cout << exc.what() << '\n';. То есть я открыл рандомную задачу и проверял, как там ведут себя функции, если бы он возвращал vec.end(), то это легко обрабатывается, а std::cout - придется использовать streambuff и rdbuf - так можно делать, но неудобно и я так никогда не делал на литкоде.

Я ничего не знаю про LeetCode. Просто утверждение, что at и [] - аналоги, не совсем верное.

если вектор пустой и вы вызвали pop_back(), то ничего не произойдет, так как внутри идет проверка на!empty(), про которую написано ниже

Calling pop_back on an empty container results in undefined behavior.

Увидел, уберу - скорее всего у меня выдавало UB, но просто ничего значимого для остановки программы не происходило, а загуглить мозгов у меня не хватило.

Компилятор предполагает, что UB при выполнении не происходит.

Можно предположить, что при вызове pop_back на векторе, указатель на конец просто уменьшится на размер данных.

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

Слушайте, разве эти знания действительно нужны человеку, который собирается начать решать литкод? Векторы и деки - это важные вещи, но необходимые их методы гуглятся за несколько секунд. Когда ты сдаешь задачу в систему автопроверки, она считается решенной, если она проходит все тесты. Таким образом, гораздо важнее для новичка будет учиться непосредственно решению задач, придумыванию алгоритмов.

Это как на кодфорсах: новички постоянно спрашивают гроссмейстеров какой у них сетап, каким редактором кода они пользуются, какие есть фишки, какой у них стоит шаблон и как его настроить.

Поймите, чтобы хорошо решать задачи, вам это все (поначалу) не нужно. Даже хитрые алгоритмы не нужны. Просто начните решать, все остальное придет с опытом, или подсмотрите у кого-то в сабмитах и намотаете себе на ус. Будет в тысячу раз полезнее подобных статей.

Sign up to leave a comment.

Articles