Почему я не должна #включать ?

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

#include <bits/stdc++.h>

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

Почему?

Комментарии к вопросу (7)
Решение

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

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

  • Вам нужно только написать одно #включить линии
  • Вам не нужно искать какой стандартный заголовок, все в

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

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

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

Дон'т сделать это!


Более подробная информация:

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

Комментарии (10)

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

Комментарии (0)

Там'ы сайт обмена стека называется Программирование головоломки & Гольф-текст. Интернет Программирование головоломки на этом сайте подходят под это определение головоломка:

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

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

Гольф-текст есть "типа конкуренции рекреационного программирования, в которых участники стремятся добиться максимально короткий исходный код, который реализует определенный алгоритм." в ответах на ПП&ХГ сайта, вы'll увидеть людей, указать количество байт в своих ответах. Когда они найти способ, чтобы скостить несколько байт, они'МР вычеркнуть исходное число и запишите новый.

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

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

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

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

Получается, что некоторым людям нравится головоломки программирования без гольф-кода. Они собираются вместе и соревнуются на различных мероприятиях, как АСМ-ICPC, программированию Яндекс и Facebook хакер чашки, или на сайтах типа Topcoder и Codeforces или. Их ранг зависит правильность программы, Скорость исполнения и как быстро они подают раствор. Чтобы увеличить скорость исполнения, многие участники используют C++. Чтобы увеличить скорость кодирования, некоторые из них используют stdc++.ч.

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

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

В этой связи возникает вопрос, почему это's стоит принимать участие в СП, если оно поощряет вредные привычки, как с помощью stdc++.H и нарушения других стандартов кодирования. Один из ответов заключается в том, что люди делают это по той же причине они выкладывают программы на ПП&К. Г.: некоторые программисты находят его приятным, чтобы использовать свои навыки программирования в игровой контекст.

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

Этот вопрос спрашивает: "Почему я не должен включать в <служба Bits/stdc++.ч>?" Я понимаю, что это был вопрос и ответ, чтобы поставить точку, и принято отвечать предназначена для одного истинного ответа на этот вопрос. Но вопрос разве'т "Почему я не должен включать в `<служба Bits/stdc++.ч> в производство код?" и поэтому, я думаю, что это's разумно рассмотреть другие сценарии, в которых ответ может быть различным.

Комментарии (4)

Из N4606, рабочий проект, стандарт на язык программирования C++ :

Заголовки 17.6.1.2 [заголовки]

  1. Каждый элемент стандартной библиотеки C++ объявлена или определена (при необходимости) в заголовке.

  2. Стандартная библиотека C++ предоставляет 61 заголовков библиотеки C++, как показано в таблице 14.

Таблица 14 — заголовков библиотеки C++
















Там'ы не &ЛТ;бит/stdc++.Н&ГТ; есть. И это не удивительно, поскольку &ЛТ;Дид/...&ГТ; заголовки деталь реализации, и обычно имеют предупреждение:

*  This is an internal header file, included by other library headers.
*  Do not attempt to use it directly. 

&ЛТ;Дид/stdc++.Н&ГТ; также несет в себе предупреждение:

*  This is an implementation file for a precompiled header.
Комментарии (1)