Как подключить bits stdc h в visual studio

Обновлено: 07.07.2024

Мой учитель сказал мне сделать это, но в разделе комментариев мне сообщили, что я не должен.

спросил(а) 2020-03-22T18:32:03+03:00 1 год, 8 месяцев назад

Включение <bits/stdc++.h> становится все более распространенным явлением, которое можно увидеть в "Переполнение стека", возможно, что-то новое, добавленное в национальный учебный план в текущем учебном году.

Я полагаю, что преимущества смутно даны таким образом:

К сожалению, это ленивый взломать, называя внутренний заголовок GCC напрямую, а не отдельные стандартные заголовки, такие как <string> , <iostream> и <vector> . Это разрушает переносимость и способствует ужасным привычкам.

К недостаткам относятся:

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

Не делай этого!

Пример того, почему Quora плохой:

ответил(а) 2020-03-22T18:43:53.370131+03:00 1 год, 8 месяцев назад

Зачем? Потому что он используется так, как если бы он был стандартным заголовком C++, но ни один стандарт не упоминает об этом. Так что ваш код непереносим по построению. Вы не найдете никакой документации для этого на cppreference. Так что это может с таким же успехом не существовать. Это плод чьей-то фантазии :)

ответил(а) 2020-03-22T18:32:03+03:00 1 год, 8 месяцев назад

Существует сайт обмена стека под названием Программирование головоломок и кода Гольф. Головоломки для программирования на этом сайте соответствуют определению головоломки: "игрушка, проблема или другое ухищрение, предназначенное для развлечения, создавая трудности, которые необходимо решить с помощью изобретательности или терпеливых усилий". Они предназначены для развлечения, а не для того, чтобы работающий программист мог быть удивлен реальной проблемой, возникающей в их повседневной работе.

Code Golf - это "тип соревнования по развлекательному компьютерному программированию, в котором участники стремятся получить максимально короткий исходный код, реализующий определенный алгоритм". В ответах на сайте PP & CG вы увидите, как люди указывают количество байтов в своих ответах. Когда они найдут способ сбрить несколько байтов, они вычеркнут исходное число и запишут новое.

Как и следовало ожидать, игра в гольф кода вознаграждает крайнее злоупотребление языком программирования Однобуквенные имена переменных. Нет пробелов. Творческое использование библиотечных функций. Недокументированные функции. Нестандартные практики программирования. Ужасные хаки.

Если на работе программист отправит запрос на извлечение, содержащий код в стиле гольфа, он будет отклонен. Их сотрудники будут смеяться над ними. Их менеджер заходил к их столу, чтобы поболтать. Тем не менее, программисты развлекаются, отправляя ответы в PP & CG.

Какое это имеет отношение к stdc++.h? Как уже отмечали другие, использовать его лениво. Он непереносим, поэтому вы не знаете, будет ли он работать на вашем компиляторе или на следующей версии вашего компилятора. Это воспитывает вредные привычки. Это нестандартно, поэтому поведение вашей программы может отличаться от ожидаемого. Это может увеличить время компиляции и размер исполняемого файла.

Это все действительные и правильные возражения. Так зачем кому-то использовать это чудовище?

Оказывается, некоторые люди любят программировать головоломки без кода игры в гольф. Они собираются вместе и соревнуются на таких мероприятиях, как ACM-ICPC, Google Code Jam и Facebook Hacker Cup, или на таких сайтах, как Topcoder и Codeforces. Их рейтинг основан на правильности программы, скорости выполнения и скорости, с которой они отправляют решение. Чтобы максимизировать скорость выполнения, многие участники используют C++. Чтобы максимизировать скорость кодирования, некоторые из них используют stdc++.h.

Это хорошая идея? Давай проверим список недостатков. Переносимость? Не имеет значения, так как эти события кодирования используют конкретную версию компилятора, которую участники заранее знают. Соответствие стандартам? Не относится к блоку кода, срок полезного использования которого составляет менее одного часа. Время компиляции и размер исполняемого файла? Они не являются частью рубрики конкурса.

Так что у нас остались вредные привычки. Это действительное возражение. Используя этот заголовочный файл, участники избегают возможности узнать, какой стандартный заголовочный файл определяет функции, которые они используют в своей программе. Когда они пишут реальный код (а не используют stdc++.h), им придется тратить время на поиск этой информации, а значит, они будут менее продуктивными. Это обратная сторона практики с stdc++.h.

Таким образом, вопрос о том, следует ли использовать stdc++.h, сводится к тому, перевешивает ли скорость кодирования в конкурсе программирования перевес вредных привычек, которые можно выработать, используя его.

xay5421_killer → Maybe xay5421 cheats in contests ibrahim129 → python division precision error Master0fPuppets → getting run time run error loserloser212 → Should I just quit cp? 4fecta → An Introduction to Plug DP dkirienko → Всероссийский школьный этап всероссийской олимпиады по информатике ar_rony1 → Bitwise operation properties! Sammarize → Краткая инструкция по написанию формул arham_doshi → cses graph session editorial(incomplete) dario2994 → Italian Olympiad in Informatics (OII) 2021 — Online Contest jovial3 → pls help anybody i am getting tle in O(10^6) ivan100sic → Binary search on integers using C++20 Errichto → [GYM] 100 Easy Problems (Bootcamp) himanshujaju → 0-1 BFS [Tutorial] humbertoyusta → [Tutorial] Dp with connected components, a simple way to understand it. shxgun → Introducing Arugo — A website that provides virtual rating while practicing on problemset Errichto → [Tutorial] Square Root Techniques yash_chad → Invitation to Consize — Shortest Code Challenge! Topcoder_Updates → Topcoder Open 2021 Algorithm Finals awoo → Разбор Educational Codeforces Round 114 __Broly__ → [Replay] BUBT Intra University Programming Contest Summer 2021 Utkarsh.25dec → Invitation to CodeChef Starters 17 (Rated for Div 2 & 3) - 17th November sevochka → .

Блог пользователя XaRDKoDblCH

Использование библиотеки stdc++.h в Visual Studio

Автор XaRDKoDblCH, история, 11 месяцев назад ,

Скачивание

Для начала мы должны эту библиотеку установить. Заходим сюда и качаем. Нужный нам файлик лежит в папке b25ac4dc. . Сохраняем его, он нам ещё понадобится.

Настраиваем Visual Studio

Где-нибудь создаем папку под названием Include. Открываем Visual Studio и создаём новый проект. Заходим в Отладка -> Свойства отладки для проекта -> Каталоги VSC++ . Перед глазами у нас должно быть вот это (если конечно вы ничего сами не меняли):


Здесь нам интересна только строчка Включаемые каталоги . Жмакаем на неё, а затем на изменить :


Нажимаем Ctrl+Insert и копируем путь к нашей папке Include, которую мы создали ранее. Нажимаем на ОК и ещё раз на ОК.

отвечу на вопрос: а что мы собственно сделали? — мы сказали Visual Studio, что она должна брать дополнительные библиотеки из папки Include.

Последний штрих

Итак, осталось совсем немного. Открываем папку Include в ней создаём папку bits и в папку bits копируем наш сохранённый файл из первого пункта. Теперь всё должно работать. Контрольный:


Да, теперь Visual Studio знает про эту библиотеку и вы можете смело её использовать.

Замечания

Будет ли библиотека работать в остальных проектах, которые я создал? — нет, эту процедуру придётся проводить с каждым проектом

Также в папку Include можете сувать все дополнительные файлы, которые вам нужны.

Заключение

Надеюсь, хоть кому-то эту было полезно. Если есть вопросы — в ЛС. Также поздравляю всех с Новым Годом!

Теги

visual studio, stdc++.h

Мой учитель сказал мне сделать это, но в разделе комментариев мне сообщили, что я не должен.

Да. Я должен был знать, что будет using namespace std; где-то версия для включения . почему этот заголовок вообще существует? конечно, ни один из стандартных включений на самом деле не включает это, так как это принесет много мусора? и если он не включен ни в одну из публичных публикаций . то почему он поставляется в дистрибутиве? @ChrisBeck: это деталь реализации. Он не является частью «публичного API» и не предназначен для использования. Но это все еще должно быть отправлено, иначе ничто не будет работать. Стандартные включения могут не использовать его по отдельности, но он предназначен для использования в предварительно скомпилированных заголовках. Смотрите комментарий вверху, который говорит: «Это файл реализации для предварительно скомпилированного заголовка». , @LightnessRacesinOrbit Если вы не должны использовать его самостоятельно, как его существование поможет с PCH? Или gcc достаточно умен, чтобы в некоторых случаях автоматически переключаться на него для целей PCH? @LightnessRacesinOrbit «Он не является частью« открытого API »или предназначен для использования». Совершенно неверно, он предназначен для публичного использования, как предварительно скомпилированный заголовок. Libstdc ++ (pre) компилирует и устанавливает предварительно скомпилированную версию этого заголовка, поэтому, если вы включите ее, G ++ на самом деле bits/stdc++.h.gch вместо этого включит предварительно скомпилированную версию. Он существует, потому что он должен существовать, чтобы его скомпилированная версия могла быть сгенерирована.

Включение <bits/stdc++.h> , по-видимому, становится все более распространенным явлением в переполнении стека, возможно, что-то новое, добавленное в национальную учебную программу в текущем учебном году.

Я предполагаю, что преимущества расплывчаты так:

К сожалению, это ленивый хак, который называет внутренний заголовок GCC напрямую, а не отдельными стандартными заголовками, такими как <string> , <iostream> и <vector> . Это разрушает мобильность и воспитывает ужасные привычки.

К недостаткам можно отнести:

  • Вероятно, он будет работать только на этом компиляторе
  • Вы не представляете, что он будет делать, когда вы его используете, потому что его содержимое не установлено стандартом
  • Даже простое обновление вашего компилятора до следующей версии может сломать вашу программу
  • Каждый отдельный стандартный заголовок должен анализироваться и компилироваться вместе с исходным кодом, что является медленным и приводит к громоздкому исполняемому файлу при определенных настройках компиляции

Не делай этого!

Пример того, почему Quora это плохо:

«Возможно, что-то недавно добавленное в национальную учебную программу в текущем учебном году» Слепой ведет слепого :( Просто пришел сюда через червоточину в другом вопросе, очень хорошо. Что усугубляет эту привычку к обучению, так это то, что за ней обычно следует прямая using namesapce std; . Всего две строки и практически каждый красивый идентификатор используется. Невероятно неприятно видеть, что этому учат. Что касается примера кворы, он мог бы измениться со временем. Сегодня я посетил эту страницу, а также плюсы и минусы <bits / stdc ++. H>, перечисленные в конкретном контексте конкурсов онлайн-программирования. Я нахожу их заключение хорошо. @EvgeniSergeev: 2KiB - это много кода, данных, символьной информации и т. Д. При попытке определить его эффект. Вы понимаете все, что добавляется? Для вашего компилятора? Текущий выпуск? Все релизы между? Все будущие выпуски? Если вам нужно выбрать между удобством и правильностью, есть только один действительный вариант.

Зачем? Потому что он используется так, как если бы он был стандартным заголовком C ++, но ни один стандарт не упоминает об этом. Таким образом, ваш код непереносим по построению. Вы не найдете никакой документации для этого на cppreference . Так что это может с таким же успехом не существовать. Это плод чьего-то воображения :)

К моему ужасу и неверию, я обнаружил, что есть хорошо известный учебный сайт, где каждый пример C ++, похоже, содержит этот заголовок . Мир безумен. Это доказательство.

Для тех, кто пишет такие "учебники"

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

PS Я вполне могу себе представить отвратительный «стандарт обучения», где могла возникнуть эта злая идея, и обстоятельства, которые привели к ней. Просто потому, что, казалось, есть практическая потребность в этом, это не делает его приемлемым - даже в ретроспективе.

PPS Нет, в этом не было практической необходимости. Стандартных заголовков C ++ не так много, и они хорошо документированы. Если вы учите, вы оказываете своим ученикам медвежью услугу, добавляя такую ​​«магию». Создание программистов с магическим мышлением - это последнее, что мы хотим. Если вам нужно предложить учащимся подмножество C ++, чтобы облегчить им жизнь, просто подготовьте раздаточный материал с кратким списком заголовков, применимых к изучаемому вами курсу, и с краткой документацией для конструкций библиотеки, которые вы ожидаете использовать учениками.

Существует сайт обмена стеками под названием « Программирование головоломок и код-гольф» . В головоломки программирования на этом сайте соответствуют этому определению головоломки :

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

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

Code Golf - это «тип соревнования по развлекательному компьютерному программированию, в котором участники стремятся получить максимально короткий исходный код, реализующий определенный алгоритм». В ответах на сайте PP & CG вы увидите, как люди указывают количество байтов в своих ответах. Когда они найдут способ сбрить несколько байтов, они вычеркнут исходное число и запишут новое.

Как и следовало ожидать, игра в гольф кода вознаграждает за крайнее злоупотребление языком программирования. Однобуквенные имена переменных. Нет пробелов. Творческое использование библиотечных функций. Недокументированные функции. Нестандартные практики программирования. Ужасные хаки.

Если на работе программист отправит запрос на извлечение, содержащий код в стиле гольфа, он будет отклонен. Их сотрудники смеялись бы над ними. Их менеджер заходил к их столу, чтобы поболтать. Тем не менее, программисты развлекаются, отправляя ответы в PP & CG.

С чем это связано stdc++.h ? Как уже отмечали другие, использовать его лениво. Он не переносимый, поэтому вы не знаете, будет ли он работать на вашем компиляторе или на следующей версии вашего компилятора. Это воспитывает вредные привычки. Это нестандартно, поэтому поведение вашей программы может отличаться от ожидаемого. Это может увеличить время компиляции и размер исполняемого файла.

Это все действительные и правильные возражения. Так зачем кому-то использовать это чудовище?

Оказывается, некоторые люди любят программировать головоломки без кода игры в гольф . Они собираются вместе и соревнуются на таких мероприятиях, как ACM-ICPC, Google Code Jam и Facebook Hacker Cup, или на таких сайтах, как Topcoder и Codeforces. Их рейтинг основан на правильности программы, скорости выполнения и скорости, с которой они отправляют решение. Чтобы максимизировать скорость выполнения, многие участники используют C ++. Чтобы максимизировать скорость кодирования, некоторые из них используют stdc++.h .

Это хорошая идея? Давайте проверим список недостатков. Переносимость? Это не имеет значения, поскольку эти события кодирования используют конкретную версию компилятора, которую участники заранее знают. Соответствие стандартам? Не относится к блоку кода, срок полезного использования которого составляет менее одного часа. Время компиляции и размер исполняемого файла? Они не являются частью рубрики конкурса.

Так что у нас остались вредные привычки. Это действительное возражение. Используя этот заголовочный файл, участники избегают возможности узнать, какой стандартный заголовочный файл определяет функции, которые они используют в своей программе. Когда они пишут реальный код (и не используют stdc++.h ), им придется тратить время на поиск этой информации, а значит, они будут менее продуктивными. Это обратная сторона практики с stdc++.h .

Таким образом, вопрос о том, стоит ли использовать, stdc++.h сводится к тому, перевешивает ли скорость кодирования в конкурсе программирования перевес вредных привычек, которые можно выработать при его использовании.

clinteastwood2

это так называемое олимпиадное подключение библиотек, этот заголовок bits/stdc++ подключает сразу набор библиотек, почти всех которые необходимы их там штук под 100, почти весь STL + некоторые старые Си либы, это удобно на олимпиадном программировании, когда нету времени подключать библиотеки вручную, тк это тратит время, но если вам это не критично лучше подключать ручками, те которые нужны, а не тащить за собой мешок ненужных игрушек

clinteastwood2

но если вам всетаки ЭТО необходимо, то этот хедер доступен только для GCC (с коробки) или если у вас Visual Studio (те msvc компилятор) добавить самому найдя файл в интернете

clinteastwood2

поправка доступен не только для GCC, но именно он поддерживает его из коробки, возможно ещё какой-то поддерживает но я не знаю таких, тк лично не сталкивался, как уже сказал выше msvc и clion его не поддерживает

clinteastwood2

ну и конечноподключение стольких хедер влечет за собой длительную первую компиляцию порядка 10-15 сек (зависит от ПК) последующие конечно быстрее будут, но нужно ли это вам? ну и конечно, код становится хуже переносимым, при использовании данного заголовка

clinteastwood2

Это так называемое олимпиадное подключение библиотек, этот заголовок bits/stdc++ подключает сразу набор библиотек, почти всех которые необходимы их там штук под 100, почти весь STL + некоторые старые Си либы, это удобно на олимпиадном программировании, когда нету времени подключать библиотеки вручную, тк это тратит время, но если вам это не критично лучше подключать ручками, те которые нужны, а не тащить за собой мешок ненужных игрушек. Hу и конечно подключение стольких хедеров влечет за собой длительную первую компиляцию порядка 10-15 сек (зависит от ПК) последующие конечно быстрее будут, но нужно ли это вам? ну и конечно, код становится хуже переносимым, при использовании данного заголовка

Новые вопросы в Информатика

расположите величины порядке убывания: 1024 бита, 1000 байтов, 1 бит, 1 байт, 1 Кбайт.Срочнооо​

Информатика. срочно. пожалуйстааааааааа помогите. дам лучший ответ. ​

Відомі площі кола та квадрата. Визначте, чи вміститься круг у квадраті.Пояснення: порівняти радіус кола та половину сторони квадрата.

Читайте также: