|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|||||||||||
Std:: или using namespace std;08.10.2017, 18:43. Показов 89405. Ответов 50
Метки нет (Все метки)
Вопрос к профессионалам.
Меня давно интересуют такие вопросы: 1) Почему, многим, вроде бы не безграмотным С++-шникам, в консольных приложениях вместо одной строки : using namespace std; нравится везде перед cout, cin, endl, string и т.п. дописывать std:: ? Это стиль такой пространно-корявый, или есть какое-то логическое объяснение? 2) Почему даже в несложных программах многие спецы предпочитают вместо коротких имён давать переменным пространные имена? 3) Почему многие спецы для несложных программ вместо необходимых заголовочных файлов используют библиотеки "на все случаи жизни"? Утрируя, можно сказать, что простая программа сложения двух чисел:
0
|
|||||||||||
| 08.10.2017, 18:43 | |
|
Ответы с готовыми решениями:
50
Использовать using namespace std; или каждый раз прописывать std:: . ? Что использовать, std::cout или просто using namespace std? Пространство имен - namespace std или std:: |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 08.10.2017, 18:50 | |||||||
Сообщение было отмечено LVV как решение
Решение
1
|
|||||||
|
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
|
||||
| 08.10.2017, 18:53 | ||||
|
1) Посмотрите внизу похожие темы. Это обсуждалось уже не раз.
2) Имена должны быть понятными. Хотя в программе из 10 строк тяжело запутаться, все равно лучше называть переменные нормально. 3) Так спецы точно не делают И отступов в вашем коде не хватает - так спецы точно не пишут.
1
|
||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 08.10.2017, 18:54 | ||
|
1
|
||
|
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
|
|
| 08.10.2017, 18:56 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 08.10.2017, 18:56 | |
|
1) неймспейсы для того и нужны чтоб раскидать имена в пространства имён. Если вам захочется определить свой класс который тоже называется cout то можете это сделать реализовав его в другом пространстве имен, иначе будет конфликт имен.
2) привычка и/или перфекционизм, наверное... 3) не понял вопрос. где какая библиотека нужна ту и надо использовать а не включать лишнее
1
|
|
|
4082 / 2680 / 432
Регистрация: 09.09.2017
Сообщений: 11,900
|
|
| 08.10.2017, 19:28 | |
|
1) а мне stdio.h более по нраву
![]() 2) Хорошая привычка. В реальных программах хорошие программисты дают переменным осмысленные имена. Сложнее запутаться в алгоритме, да и другие быстрее поймут. Вот и в школьных программах уже по привычке называют переменные осмысленно - хотя бы 3-10 символов. Разумеется, есть типичные применения вроде i,j,k для счетчиков цикла. 3) Это скорее для школьных задач или отладки. Когда не знаешь заранее какой набор библиотек потребуется, а экономить объем/скорость не надо. Вот и подключают на все случаи жизни.
1
|
|
|
Неэпический
|
|||||||||||
| 08.10.2017, 19:47 | |||||||||||
|
Для мелких проектов с известным контекстом можно и воспользоваться, но привычкам не изменяем. Ну и using namespace может пригодится для других вещей. ![]()
1
|
|||||||||||
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
||
| 08.10.2017, 23:06 | ||
|
А он долбанул туда std и мои неймспейсы. А потом доказывал мне два часа, что функция tanh у меня кривая, мол ничего не компилиться)
1
|
||
|
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
|
|
| 08.10.2017, 23:22 | |
|
Некоторые классы stl и boost`а только namespace`ом и отличаются)
1
|
|
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
||
| 09.10.2017, 16:45 [ТС] | ||
|
Но ведь Visual Studio позволяет переменным и константам присваивать имена кириллицей. Почему никто этим никогда не пользуется, хотя бы в процессе обучения? Новичкам легче было бы отличить служебные слова языка программирования от придуманных программистом имён и идентификаторов. Или Вы считаете, что нужно сразу писать коды под "международный уровень" и пичкать этим новичков? Предвижу возражения, мол не нужно привыкать к неправильному стилю, не соответствующему стандартам С/С++. Выходит, что в корпорации Microsoft все настолько глупы, что позволяют от этих самых стандартов отходить?
0
|
||
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
||
| 09.10.2017, 17:16 | ||
|
Не по теме:
Добавлено через 8 минут Общее соображение такого, что любой мастер в любом деле со временем нарабатывает определённый стиль. Этот стиль вбирает в себя весь опыт мастера, все его ошибки и неудачи. Его стиль будет эффективным, но не всегда оптимальным. Зато его решения будут, как правило, работать почти всегда. И стиль его именно такой потому что он со временем набрал в свой багаж то, что работает хорошо и работает почти всегда. Однажды вы назовёте переменные кириллицей, а потом будете плеваться, когда вам станет необходимо перекомпилировать свой код другим компилятором. В следующий раз вы не то что не станете пользоваться кириллицей, а даже не задумаетесь о такой возможности... Если мастер не делает чего-то очевидного, скорее всего это означает, что там есть подводные камни, на которые мастер уже наступал. Возможно ни один раз... Добавлено через 4 минуты Отвечая на вопрос, почему то или иное не используется что-либо в учебных целях, следует помнить, что мастер никогда не станет учить абстракции. Он будет учить тому, как он делает сам. Он сам может быть давно забыл, почему он не пишет using namespace std... Но, обучая новичков... Он тоже не станет этого делать. Просто потому, что не станет над этим задумываться.
0
|
||
|
Неэпический
|
||||
| 09.10.2017, 17:37 | ||||
|
2) Ковырять другие редакторы и компиляторы на поддержку кириллицы - далеко не для новичков занятие. 3) В топку любую кириллицу из кода. 4) Круто будет, если разные редакторы захотят в разной кодировке работать с файлом. 5) Хочется постоянно переключаться между языками? 6) Все программисты - русские. Это же очевидно. ![]() А как кирилические имена относятся к стандарту? Может приведете нам цитату из стандарта, запрещающую использовать кириллические имена?
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 09.10.2017, 19:47 | |||||||
|
если в кратце: для имен стандарт определяет буковки английского алфавита, знак подчеркивания, и циферки. причем имя не должно начинаться с циферки. так же, стандарт определяет все доступное множество символов. если вкратце - сишная локаль. то бишь английский алфавит, циферки, плюс кучка символов управляющих последовательностью ('\n' '\0' , etc) все прочее - от лукавого каель умеет русские имена в переменных. но это же каель. ещё бы он не умел. он умеет все, что не нужно уметь. а вот мингв/гцц/шланг могут послать нафиг даже за такое:
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 09.10.2017, 20:05 | |||
|
я вижу лишь какую то двухбайтовую ботву. ну или приведите пример. другое дело: 1. берем гцц/мингв 2. берем исходник в кодировке 1251 3. пишем: std::cout << "привет"; 4. наслаждаемся матюгами от компилятонра. 5. ПРОФИТ???!!!
0
|
|||
|
4082 / 2680 / 432
Регистрация: 09.09.2017
Сообщений: 11,900
|
|
| 09.10.2017, 20:15 | |
|
Да не должны вроде. Вот вывести вместо русского текста какую-то фигню они могут, но чтобы посылать...
0
|
|
|
Неэпический
|
||||||||||||||||
| 09.10.2017, 21:05 | ||||||||||||||||
clang жрет без проблем. У mingw (gcc) проблемы с этим. Когда-то висела бага такая на багтрекере. Сейчас не знаю. Но можно кодом указать (об этом написано в Character sets, как же Вы читали?):
-fextended-identifiers.Ну и можно глянуть на страничку http://en.cppreference.com/w/c... dentifiers
![]()
0
|
||||||||||||||||
|
4082 / 2680 / 432
Регистрация: 09.09.2017
Сообщений: 11,900
|
||
| 09.10.2017, 22:03 | ||
|
0
|
||
| 09.10.2017, 22:03 | |
|
Помогаю со студенческими работами здесь
20
Зачем часто писать std::, если можно один раз using namespace std? Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream Std и using namespace std Можно ли как-то убрать или заменить std:: в строке std::getline(cin, str);?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|