Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556

Почему опытные программисты не определяют пространство имен std?

01.03.2016, 07:56. Показов 5477. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все чаще замечаю в различных статьях, на сайтах, форумах, что опытные программисты не используют
C++
1
using namespace std;
Почему? Стоит ли каждый раз новичку вписывать это пространство или лучше привыкать работать без него?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2016, 07:56
Ответы с готовыми решениями:

Пространство имен - namespace std или std::
В каких случая лучше писать (std::cout) или просто прописать (namespace std) и почему ?

Пространство имен std
В книге Дейтела (как, и в других источниках) написано, что можно написать using namespace std, а можно указывать std:: перед функциями. Но...

Пространство имен std
привет подскажите пожалуйста почему так? #include <iostream> #include <string> int main(){ std::string str; std::char ch;...

13
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
01.03.2016, 08:12
Sabnik18, Как я понимаю, стандартное пространство используется для имен переменных/функции и т.д. СТАНДАРТНОЙ библиотеки. Написав:
C++
1
using namespace std;
ты тем самым начинаешь доопределять его СОБСТВЕННЫМИ именами, тем самым "захламляя" его, это может приводить к некорректному поведению программы (из-за конфликтов имен или при (пере)определении какого-либо стандартного имени)
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.03.2016, 08:47
Лучший ответ Сообщение было отмечено sab1ch как решение

Решение

Ferrari F1, Нет, std ты не захламляешь. Ты захламляешь глобальную область видимости членами пространства имен std.
Sabnik18, Тут зависит от. В файле реализации никто не запрещает использовать. С другой стороны решение использовать или не использовать зависит от кол-ва используемых библиотек. Дабы не попасть в коллизию имен люди и не используют.
2
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
01.03.2016, 10:48
Цитата Сообщение от ForEveR Посмотреть сообщение
Ты захламляешь глобальную область видимости членами пространства имен std.
Скорее в "текущую".
Например,
C++
1
2
3
4
5
6
namespace Test
{
    using namespace std;
    //сюда скидываем
}
//здесь оно уже не катит
http://rextester.com/QDPV83065


using namespace std
2
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,562
01.03.2016, 11:32
Цитата Сообщение от Sabnik18 Посмотреть сообщение
опытные программисты не используют
Чтобы избежать ненужных проблем типа:
C++
1
2
// string.h
class string {};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// main.cpp
#include "string.h"
#include <string>
 
using namespace std;
 
// тут 100500 строк кода
 
int main()
{
    // тут ещё столько же
 
    string sss; // упс!
}
Цитата Сообщение от Sabnik18 Посмотреть сообщение
лучше привыкать работать без него?
Лучше привыкать работать только с тем, что тебе нужно в даный момент:
C++
1
2
3
4
5
int main()
{
    using std::string;
    string sss;
}
2
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
01.03.2016, 13:04
Цитата Сообщение от Sabnik18 Посмотреть сообщение
не используют
C++
1
using namespace std;
в нём очень много и других простых вещей, например std::begin, std::max, std::fill, std::count, std::endl,... А в большом коде возможно появление и своих реализаций подобных вещей.
Для простых вещей префикс std:: будет полез при чтении другими людьми, например, если в коде есть std::u32string и icu::UnicodeString, то сразу понятно что и откуда.
Для более сложных случаев: using внутри функций уже станет уже скорее спасением, чем плохим стилем, например такой стандартный пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// high_resolution_clock example
#include <iostream>
#include <ctime>
#include <ratio>
#include <chrono>
 
int main ()
{
  using namespace std::chrono;
 
  high_resolution_clock::time_point t1 = high_resolution_clock::now();
 
  std::cout << "printing out 1000 stars...\n";
  for (int i=0; i<1000; ++i) std::cout << "*";
  std::cout << std::endl;
 
  high_resolution_clock::time_point t2 = high_resolution_clock::now();
 
  duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
 
  std::cout << "It took me " << time_span.count() << " seconds.";
  std::cout << std::endl;
 
  return 0;
}
0
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
01.03.2016, 13:10  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Чтобы избежать ненужных проблем типа:
Вообще, можно using namespace std указать в заголовке, ну да ладно, все равно убедили.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
01.03.2016, 17:06
Цитата Сообщение от Sabnik18 Посмотреть сообщение
Вообще, можно using namespace std указать в заголовке
За такое вообще надо забивать до смерти.
6
 Аватар для Pancir
59 / 46 / 11
Регистрация: 16.09.2014
Сообщений: 124
01.03.2016, 17:09
Цитата Сообщение от Sabnik18 Посмотреть сообщение
Вообще, можно using namespace std указать в заголовке, ну да ладно, все равно убедили.
В с++ можно вообще много чего делать вопрос в том, что нужно осознавать, что ты делаешь и какие последствия будут, можете указать в заголовке потом везде где вы его подключите получите действие этого самого using namespace std, если вы пишите библиотеку то ее пользователи за это вам будут "очень благодарны" вплоть до отказа использовать такую библиотеку, если вы пишите свою программку где всего один заголовочный файл и небольшое количество кода то в использовании этого вряд ли будет что то страшное, но я например даже в таких случаях не использую using namespace std, хотя иногда я все же использую using namespace не std но строго только в cpp и отдаю себе отчет что я делаю и чем мне это грозит иными словами я понимаю, что в данном случае от этого будет больше пользы чем вреда.
0
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
01.03.2016, 17:10
Соглашусь с высказываниям выше. Определения всех имен типов не лучшая идея для больших программ. На приложение и так огромная нагрузка из-за большого кол-ва алгоритмов и т.д.(к примеру), дак и еще все типы определены. (тормозит программу)
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.03.2016, 17:15
Лучший ответ Сообщение было отмечено castaway как решение

Решение

Цитата Сообщение от Nik- Посмотреть сообщение
дак и еще все типы определены. (тормозит программу)
Вообще никакого отношения. Хедер файл включен - типы определены.
1
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
01.03.2016, 17:17
Извиняюсь, видимо что-то недопонял. Когда-то давно читал, что это сильно тормозит программу,это не так?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.03.2016, 18:52
Лучший ответ Сообщение было отмечено castaway как решение

Решение

Цитата Сообщение от Sabnik18 Посмотреть сообщение
Почему?
код читать удобнее.
видите такую вещь:
std::string
и сразу понятно что это, и откуда.
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
02.03.2016, 09:22
Хороший пример:

C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <algorithm>
using namespace std;
 
int count = 1;
int main() {
    cout<<count<<endl;
}
Добавлено через 54 секунды
Прикольнее закоментировать объявдение count
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2016, 09:22
Помогаю со студенческими работами здесь

Пространство имен std
Какой стиль лучше ? using std::cout; using std::endl; or using namespace std;

Есть опытные программисты
Всем привет дорогие друзья. Помогите пожалуйста отредактировать одну программку она весит 700кб Если есть тот кто реально может помоч,...

Опытные программисты , нужно сделать считывание с файла матрицы 4*4
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; using namespace std; int main() { int n; cout&lt;&lt;&quot;Vvedite...

Не работает пространство имен std в Windows Forms
В Form1.cpp следующий код: #include &quot;Form1.h&quot; #include &quot;***.h&quot; using namespace Project1; //name of your project int...

Опытные программисты. Нужен совет
Здравствуйте дорогие Форумчане :). Я, Наполненный Энтузиазмом, нацелился создать программу мессенджер типа ICQ, mragent и тд и тп, Но в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru