Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

  • Автор темы Автор темы placey
  • Дата начала Дата начала
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
чтоб не писать постоянно std::
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чел, не стоит на каждый вопрос создавать тему) Ответы на большую часть вопросов можно просто нагуглить. Но так и быть.

Что такое пространство имен в целом?

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

Пример:
Код:
Expand Collapse Copy
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;
    }

}

И использовать это так:
Код:
Expand Collapse Copy
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::
 
просто в начале кода ее пишешь и всё
Ужасная практика, к такому даже не стоит привыкать. В современных реалиях такое позволительно использовать только на соревнованиях по спортивному программированию, где секунды решают.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ужасная практика, к такому даже не стоит привыкать. В современных реалиях такое позволительно использовать только на соревнования по спортивному программированию, где секунды решают.
я не кодер, лично мне похуй, что и как
 
Что такое пространство имен в целом? И правильно ли я понял, что функция include добавляет библиотеку?
ну тип чтобы достать что-то из namespace тебе надо написать его имя, :: и то что тебе надо, а если ты написал "using namespace ", то необязательно
 
Что такое пространство имен в целом
Пространство имен определяет область видимости символов (переменных, функций, классов, и всего что имеет имя).
По умолчанию весь код пишется в глобальной области видимости, и доступен ото всюду.
Но ты можешь обернуть его в неймспейс вида namespace имя_неймспейса { /* код */ } и обратиться к символам внутри него можно будет через префикс имя_неймспейса::
Так же делает стандартная библиотека, весь свой функионал она оборачивает в std, и использовать его ты можешь прописав std:: перед именем.
Но кроме этого, можно использовать неймспейсы, написав using namespace std; ты открываешь простанство имен std для глобального пространства, так что все имена оттуда доступны тебе без префикса.
В целом это не очень хорошая идея, т.к. могут быть конфликты имен, и зачастую лучше использовать префикс.
 
Это используется для определения пространства имен std, который используется для написания простецких функций внутри iostream, ты можешь создать свой неймспейс используя namespace YourName { } и затем добавить в него функции вызвав ее с помощью YourName::somefunc();, чтобы не указывать на пространство имен существует using namespace, используется ситуативно и в основном для удобства.
 
using namespace std; сообщает компилятору, что мы хотим использовать всё, что находится в пространстве имен std, так что, если компилятор найдет имя, которое не сможет распознать, он будет проверять его наличие в пространстве имен std.
 
Назад
Сверху Снизу