|
1 / 1 / 0
Регистрация: 17.08.2020
Сообщений: 19
|
||||||
Дек (deque) - проверка знаний03.08.2021, 13:42. Показов 4781. Ответов 27
Добрый день/вечер/ночь.
Захотел воспользоваться знаниями опытных программистов этого форума и получить критику по ниже представленному "коду" ![]() Очень интересны абсолютно любые замечания, касающиеся стиля (если он там есть), работой с памятью и изобретенных велосипедов. Понимаю, что снизу представлен слишком скудноватый на строки код, чтобы по нему делать какие-то выводы, но уверен, что даже в нем находятся ошибки, которых я не замечаю ввиду своей неопытности. Итак, ниже я попытался написать дек при помощи динамического массива. Акцентирую внимание, что просматривал как работает стандартная библиотека <deque>, чтобы не отходить от её функционала. И немного глупо (по-моему мнению) получились методы begin() И end(), так как для очереди может быть выделена память из кучи, но заполнена только до половины, однако метод end() вернет значение на последний "мусорный" элемент очереди. Посмотрел и в <deque> работает это точно также, однако возможно чего то не заметил или не понял. Здесь ссылка на GitHub, если понадобится: https://github.com/spo1lsp0rt/deque_darr Ниже также находится вывод в консоль. Заранее благодарю за потраченное вами время ![]() Код: Кликните здесь для просмотра всего текста
Вывод в консоли: Кликните здесь для просмотра всего текста
Первое значение дека: 777 Промежуточное значение дека: 888 Последнее значение дека: 999 Пуст ли дек? Ответ: 0 Очистили дек. Пуст ли дек? Ответ: 1 Воспользовались assign(). Вывод дека: 9 9 9 9 9 Размер дека: 5 Воспользовались insert() для begin(). Вывод дека: 0 9 9 9 9 9 Воспользовались pop_back() и pop_front(). Вывод дека: 9 9 9 9 Воспользовались push_back() и push_front(). Вывод дека: -5 9 9 9 9 -5
0
|
||||||
| 03.08.2021, 13:42 | |
|
Ответы с готовыми решениями:
27
Deque (Дек) на двусвязном списке Создание ДЕК (как стэк только о двух концах) без <deque> Есть ли в Qt контейнер типа "Дек" (deque) или надо свой написать? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 04.08.2021, 17:41 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 04.08.2021, 17:51 | |
|
hoggy, потому что в общем случае компилятор будет не в состоянии доказать, что объект, переданный по ссылке, не изменяется в процессе выполнения функции.
Вот пример: https://godbolt.org/z/vz18rbWo7
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 04.08.2021, 18:34 | ||
|
он же видит, что внутри функции ссылка не изменяется. а то, что она может измениться снаружи функции, например, в параллельном потоке, это компилятор уже не обязан учитывать. разве нет?
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 04.08.2021, 18:45 | |
|
hoggy, вообще речь не про потоки.
Посмотри ассемблерный код, который я скинул. Там и в цикле и вне цикла происходит каждый раз косвенное чтение. А все почему? Потому что компилятор не может видеть побочные эффекты foo и boo. Может они внутри себя меняют глобальную переменную, ссылку на которую мы и передали? Т.е. тут речь о трудности в общем случае предсказать именно синхронное изменение объекта при наличии хоть малейшей возможности присутствия побочных эффектов. Т.к. в реальном мире достаточно редко встречаются функции, которые не делают внутри себя что-то имеющее побочные эффекты, то почти всегда такое чтение по ссылке будет сопровождаться накладными расходами на косвенный доступ.
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 04.08.2021, 19:07 | ||
|
совершенно не заморачиваясь тем, что кто-то может её поменять. а мне, соответственно, приходилось делать её волатильной.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 04.08.2021, 19:14 | |
|
0
|
|
|
фрилансер
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
|
||
| 04.08.2021, 19:23 | ||
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 04.08.2021, 19:26 | ||
|
чего там было не так. сейчас я вижу ситуацию так: хороший компилятор должен предполагать худший сценарий. и если есть вероятность, что оптимизация может что-то нарушить, то хороший компилятор не должен её осуществлять. именно по этой причине хороший компилятор и не оптимизирует ссылку. однако в реальном мире компиляторы не всегда ведут себя хорошо. поэтому, я допускаю мысль, что компилятор запросто может соптимизировать и ссылку, и глобальную переменную, и все что угодно, что не было помеченно как volatile
0
|
||
| 04.08.2021, 19:26 | |
|
Хранение в контейнере deque целых чисел и проверка основных операций Проверка знаний по C++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|