Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: баг в студийной реализации std::deque  (Прочитано 15882 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 06-10-2010 06:58 » 

https://connect.microsoft.com/VisualStudio/feedback/details/533131/bug-in-std-deque-non-conforming-invalidation-of-iterators-after-pop-front?wa=wsignin1.0

Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-10-2010 10:28 » 

Неужели за столько лет никто не столкнулся с этой багой? Не верится...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 06-10-2010 10:34 » 

не знаю Улыбаюсь А я так и не успел с deque  поработать ещё
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-10-2010 11:11 » 

Я, благо VC не использую. У меня Borland. Там много предупреждений компиляции, но работает как надо.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #4 : 06-10-2010 11:20 » 

Lol

Цитата
Thanks again for reporting this bug. We've fixed it, and the fix will be available in VC11.

...

Thanks for reporting this bug. We've confirmed that your code triggers a spurious debug assertion. Unfortunately, it's too late to fix this in VC10, but we're keeping this bug open so that it can be fixed in VC11.

....

Stephan T. Lavavej
Visual C++ Libraries Developer

В существующих тулах никто ничего менять даже не собирается )))
Записан

С уважением Lapulya
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 06-10-2010 11:30 » 

это они намякивают на скорый выход новой студии, наверное )

и все, кто использует дек, туда шустро перейдут
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 06-10-2010 13:31 » 

Неужели за столько лет никто не столкнулся с этой багой? Не верится...
Сценарий непростой - сначала куда-то в deque забраться итератором, потом из начала что-то удалить, а потом продолжить работать со старым итератором. Работая с другими контейнерами, я лично привык уже разделять итерирование и удаление элементов (erase-remove и другие простые способы отфильтровать содержимое тому способствуют).
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 06-10-2010 17:33 » 

Вад, ну, это не так сложно. Например, перебирать deque в цикле итератором и удалить какой-то элемент, но не тот, на который указывает итератор цикла.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #8 : 06-10-2010 18:14 » 

думаю, что это связано, что декуе используется значительно реже других контейнеров, был бы этот баг в векторе, был бы  багрепорт еще в бетте студии. Ну мы бы точно зарепортили еще в 98 году ))), в то время вектор вертели как только можно.
Записан

С уважением Lapulya
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 06-10-2010 18:19 » 

Я использовать deque вместо vector начал только после рекомендаций здесь на форуме: deque оптимальнее работает с памятью.
« Последнее редактирование: 06-10-2010 18:24 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 06-10-2010 18:23 » 

а чем оптимальнее то ?
чем вектор указателей отличается от дек ?
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 06-10-2010 18:26 » 

Леш, попробуй поискать по форуму в длинннннющей теме про STL. Суть в том, что вектор - непрерывный массив, когда как deque - набор блоков. Когда надо расширить вектор, если нет свободного места, то выделяется новый кусок памяти и туда копируется все текущее содержимое вектора. Это весьма накладно при больших списках.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 06-10-2010 18:34 » 

ага, про поведение вектора я в курсе. Учитываю всегда )

но это есть единственное различие ихнее ?
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 06-10-2010 18:47 » 

https://forum.shelek.ru/index.php/topic,20266.msg203467.html#msg203467
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #14 : 07-10-2010 04:47 » 

ну насчёт random-access Вад загнал, оно там есть, но не через указатели
Записан

Странно всё это....
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 07-10-2010 06:47 » 

ну насчёт random-access Вад загнал, оно там есть, но не через указатели
Ну, да, я скорее имел в виду непрерывность буфера с вытекающей возможностью передать вектор как указатель на память куда-то в c-шный код. Последний абзац - нагнал Улыбаюсь
« Последнее редактирование: 07-10-2010 06:50 от Вад » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines