Вопрос Что такое using namespace std?

fff
Начинающий
Статус
Оффлайн
Регистрация
24 Ноя 2020
Сообщения
115
Реакции[?]
21
Поинты[?]
0
Что такое пространство имен в целом? И правильно ли я понял, что функция include добавляет библиотеку?
 
rosemary.lua
Забаненный
Статус
Оффлайн
Регистрация
26 Апр 2021
Сообщения
391
Реакции[?]
88
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
чтоб не писать постоянно std::
 
fff
Начинающий
Статус
Оффлайн
Регистрация
24 Ноя 2020
Сообщения
115
Реакции[?]
21
Поинты[?]
0
rosemary.lua
Забаненный
Статус
Оффлайн
Регистрация
26 Апр 2021
Сообщения
391
Реакции[?]
88
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хех.......)#манипулятор #кукловод #манипуляция
Участник
Статус
Оффлайн
Регистрация
28 Дек 2019
Сообщения
557
Реакции[?]
223
Поинты[?]
3K
держи братка, только ради тебя!1!1111!!!!!!!
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2020
Сообщения
10
Реакции[?]
4
Поинты[?]
0
Чел, не стоит на каждый вопрос создавать тему) Ответы на большую часть вопросов можно просто нагуглить. Но так и быть.

Что такое пространство имен в целом?
Пространства имен разграничивает область видимости твоего кода. Например ты можешь в разных неймспейсах объявить две разные функции с одинаковым именем и использовать их в одном участке кода обращаясь к ним через ::

Пример:
Код:
namespace Math
{
    float Sqrt(int  iNumber)
    {
        float flSqrt = iNumber / 2;
        float flTemp = 0;

        while (flSqrt != flTemp)
        {
            flTemp = flSqrt;
            flSqrt = (iNumber / flTemp + flTemp) / 2;
        }

        return flSqrt;
    }

}

namespace FastMath
{
    float Sqrt(const float& flValue) const
    {
        union { int i; float f; } u;
        u.i = 0x1FB5AD00 + (*(int*)&flValue >> 1);
        u.f = flValue / u.f + u.f;
        return flValue / u.f + u.f * 0.25f;
    }

}
И использовать это так:
Код:
int main()
{
    std::cout << Math::Sqrt(25) << std::endl;
    std::cout << FastMath::Sqrt(25) << std::endl;
    
    return 0;
}
Неймспесы созданы для того, чтобы твой код выглядел структурированным и хорошо читался. Глобальные неймспесы - зло. Если ты реализовываешь какой либо функционал, он обязательно должен жить в неймспейсе.

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


Что такое using namespace std?
Это означает, что внутри файла будет обеспечен доступ ко всем членам нейспейса std без необходимости обращения к ним напрямую через std::
 
money++
Разработчик
Статус
Оффлайн
Регистрация
14 Июн 2018
Сообщения
638
Реакции[?]
339
Поинты[?]
22K
просто в начале кода ее пишешь и всё
Ужасная практика, к такому даже не стоит привыкать. В современных реалиях такое позволительно использовать только на соревнованиях по спортивному программированию, где секунды решают.
 
rosemary.lua
Забаненный
Статус
Оффлайн
Регистрация
26 Апр 2021
Сообщения
391
Реакции[?]
88
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ужасная практика, к такому даже не стоит привыкать. В современных реалиях такое позволительно использовать только на соревнования по спортивному программированию, где секунды решают.
я не кодер, лично мне похуй, что и как
 
Эксперт
Статус
Оффлайн
Регистрация
13 Сен 2020
Сообщения
1,415
Реакции[?]
713
Поинты[?]
10K
Что такое пространство имен в целом? И правильно ли я понял, что функция include добавляет библиотеку?
ну тип чтобы достать что-то из namespace тебе надо написать его имя, :: и то что тебе надо, а если ты написал "using namespace ", то необязательно
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Что такое пространство имен в целом
Пространство имен определяет область видимости символов (переменных, функций, классов, и всего что имеет имя).
По умолчанию весь код пишется в глобальной области видимости, и доступен ото всюду.
Но ты можешь обернуть его в неймспейс вида namespace имя_неймспейса { /* код */ } и обратиться к символам внутри него можно будет через префикс имя_неймспейса::
Так же делает стандартная библиотека, весь свой функионал она оборачивает в std, и использовать его ты можешь прописав std:: перед именем.
Но кроме этого, можно использовать неймспейсы, написав using namespace std; ты открываешь простанство имен std для глобального пространства, так что все имена оттуда доступны тебе без префикса.
В целом это не очень хорошая идея, т.к. могут быть конфликты имен, и зачастую лучше использовать префикс.
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Это используется для определения пространства имен std, который используется для написания простецких функций внутри iostream, ты можешь создать свой неймспейс используя namespace YourName { } и затем добавить в него функции вызвав ее с помощью YourName::somefunc();, чтобы не указывать на пространство имен существует using namespace, используется ситуативно и в основном для удобства.
 
Начинающий
Статус
Оффлайн
Регистрация
4 Июн 2021
Сообщения
15
Реакции[?]
5
Поинты[?]
0
using namespace std; сообщает компилятору, что мы хотим использовать всё, что находится в пространстве имен std, так что, если компилятор найдет имя, которое не сможет распознать, он будет проверять его наличие в пространстве имен std.
 
Сверху Снизу