LINUX.ORG.RU

Ответ на: комментарий от anonymous

Вашу ж мать, я надеялся что хоть другие вузы не страдают подобной х..й, извеняюсь. И, да, зачетная неделя началась. По сабжу есть что сказать?

ALeo
() автор топика

а сколько всего элементов? случаем не 2?

stave ★★★★★
()

Покажите весь код, пожалуйста. Вообще попробуйте вставить перед и после удалением: qDebug() << opened.

Dendy ★★★★★
()

если тебе нужно что-то удалять не из конца вектора, то значит ты неверно выбрал структуру данных

Reset ★★★★★
()
Ответ на: комментарий от Reset

> если тебе нужно что-то удалять не из конца вектора, то

1) нужно сделать std::swap с последним элементом
2) ...
3) профит

(при условии, что порядок элементов не важен)

SilentBob
()
Ответ на: комментарий от SilentBob

Херню ты сказал. Для удаления из середины вектора надо двигать большие куски памяти. Вектор на то и вектор, что все элементы лежат в памяти одним непрерывным куском.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Таки да, заюзал QList вместо QVector, для этих вещей он удобней.

ALeo
() автор топика
Ответ на: комментарий от Reset

> Херню ты сказал. Для удаления из середины вектора надо двигать большие куски памяти

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

SilentBob
()
Ответ на: комментарий от SilentBob

> по причине отсутствия необходимости «двигать большие куски памяти»

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

SilentBob
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.