![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
sdukshis |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 23.3.2009 Репутация: нет Всего: 1 |
Если подобные операции приходится проводить часто, то использование vector действительно не разумно.
Я бы предложил использовать set или list совместно с find_if Пример с set
Пример с list и find_if
Это сообщение отредактировал(а) sdukshis - 23.4.2009, 10:40 |
||||
|
|||||
Paspartu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
To mes. Извините, что отвечаю с такими задержками на работе Интернета нет только локалка без выхода в мир… Да, совершенно верно, в данном случае, если в 5 пункте сдвинуть С на позицию X = 170, то отрезок С стал бы «чисто» ничего раздвигать и сдвигать не надо, после перемещения происходит только сортировка. Причем у отрезка сбросился бы сохраненный отрезок под чьим прессингом он находился для данного случая сбросилось бы упоминание об отрезке E. Т.е. тот отрезок который переносится считается основным, а все остальные работают под него (если происходит сдвиг). А вот если бы после того как подвинули С на 170, придет событие что надо отрезок E установить в позицию 75 то естественно отрезок B сдвинется на освободившееся место Bx = 45… Ex = 80 -> Bx = 50… Ex = 85-> Bx = 50… т.е. отрезок B будет двигаться вслед переносимому отрезку E, пока не будет полностью погашено его смещение вызванное именно этим отрезком (E), после чего вся информация об смещении у отрезка B сбрасывается. Но здесь все просто, когда нет перескоков, то сортировка не нужна, а вот с перескоками дела обстоят сложнее.
To sdukshis. Спасибо за отзыв, постараюсь разобраться с предложенным вариантом. Склоняюсь в сторону std::list, а дальше видно будет… ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Сортировка никогда не нужна, если есть перескок, то и в контейнере делайте перескок элемента. В общем виде Вам нужно изготовить свой контейнер, который будет являться надстойкой над обычным и осущесвлять всю логику, которую Вы описали. Сами элементы лишь хранят необходимую для этого информацию, в частности значение координат отображания, и реальных, относительно которых произошел сдвиг под прессингом. |
|||
|
||||
Paspartu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 3.5.2007 Репутация: нет Всего: нет |
Огромное спасибо mes и sdukshis! Вопрос закрыт!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |