Форум программистов, компьютерный форум CyberForum.ru

зачем часто писать std:: если можно один раз using namespace std? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 114, средняя оценка - 4.70
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
01.07.2010, 13:17     зачем часто писать std:: если можно один раз using namespace std? #1
зачем часто писать std:: если можно один раз using namespace std?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 13:17     зачем часто писать std:: если можно один раз using namespace std?
Посмотрите здесь:

STL std::set, std::pair, std::make_pair C++
C++ Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
C++ using namespace std
using namespace std; C++
C++ что использовать std::cout или просто using namespace std?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.07.2010, 13:19     зачем часто писать std:: если можно один раз using namespace std? #2
std - пространство имен. При using namespace std ты его включаешь, поэтому глобально его вызывать не очень хорошо, для легких программ - можно. А если тебе понадобятся другие пространства имен? Да и смысл включать пространство имен, ради двух функций cout,cin?
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
01.07.2010, 13:22  [ТС]     зачем часто писать std:: если можно один раз using namespace std? #3
спасибо.
я же говорю, программист-любитель!...
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
01.07.2010, 13:27     зачем часто писать std:: если можно один раз using namespace std? #4
Можно вместо всего пространства имен подключать отдельные функции.
C++
1
2
3
using std::cout;
using std::cin;
// и т.д.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.07.2010, 13:28     зачем часто писать std:: если можно один раз using namespace std? #5
что бы не писать каждый раз
C++
1
std::cin   std::cout
можно в нчале 1 раз написать
C++
1
using std::cin;  using std::cout;

опоздал
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
01.07.2010, 13:55     зачем часто писать std:: если можно один раз using namespace std? #6
а ещё в <iomanip> есть std::setw(); - это типа табуляции))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
01.07.2010, 17:15     зачем часто писать std:: если можно один раз using namespace std? #7
Вот так тоже работает
C++
1
2
3
4
5
6
7
8
#include <iostream>
#define cout std::cout
#define endl std::endl
 
int main(){
    cout << "Hello world!" << endl;
    return 0;
}
но что-то подсказывает, что лучше так не делать
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
01.07.2010, 17:46     зачем часто писать std:: если можно один раз using namespace std? #8
Цитата Сообщение от easybudda Посмотреть сообщение
Вот так тоже работает
C++
1
2
3
4
5
6
7
8
#include <iostream>
#define cout std::cout
#define endl std::endl
 
int main(){
    cout << "Hello world!" << endl;
    return 0;
}
но что-то подсказывает, что лучше так не делать
меня всегда устраивает using namespact std; пока с проблемами не сталкивается......
p.s.
А для чего используестся #define?(помимо данного случая с cout и endl)?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.07.2010, 17:48     зачем часто писать std:: если можно один раз using namespace std? #9
Цитата Сообщение от Sanu0074 Посмотреть сообщение
меня всегда устраивает using namespact std; пока с проблемами не сталкивается......
p.s.
А для чего используестся #define?(помимо данного случая с cout и endl)?
Макрос.ТТ. Гугли.

Допустим

#define PI 3.1415
float pi=PI;
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
01.07.2010, 17:53     зачем часто писать std:: если можно один раз using namespace std? #10
Sanu0074, а к чему вы вообще написали про std::setw?
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
01.07.2010, 18:15     зачем часто писать std:: если можно один раз using namespace std? #11
Цитата Сообщение от neske Посмотреть сообщение
Sanu0074, а к чему вы вообще написали про std::setw?
т.к. вопрос был про std::, а не конкретно про cout\endl!!!
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.07.2010, 18:18     зачем часто писать std:: если можно один раз using namespace std? #12
Цитата Сообщение от Sanu0074 Посмотреть сообщение
т.к. вопрос был про std::, а не конкретно про cout\endl!!!
Вопрос был про использование пространств имен, а не конкретно по std. Мог бы тогда еще и контейнеры, алгоритмы, утилиты и т.д. упомянуть.
Sanu0074
 Аватар для Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,186
Записей в блоге: 5
01.07.2010, 18:24     зачем часто писать std:: если можно один раз using namespace std? #13
Цитата Сообщение от Lavroff Посмотреть сообщение
Макрос.ТТ. Гугли.

Допустим

#define PI 3.1415
float pi=PI;
конечно спс)) но я ничо непонял)) обязательно погуглю......

Добавлено через 5 минут
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Вопрос был про использование пространств имен, а не конкретно по std. Мог бы тогда еще и контейнеры, алгоритмы, утилиты и т.д. упомянуть.
внимательно читайте текст темы:
зачем часто писать std:: если можно один раз using namespace std?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.07.2010, 18:25     зачем часто писать std:: если можно один раз using namespace std? #14
Sanu0074, #define PI 3.1415 // PI=3,1415
pi=PI // Я думаю сами понимаете)
nekogdamne
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 7
01.07.2010, 18:26     зачем часто писать std:: если можно один раз using namespace std? #15
Sanu0074, как я понял, комманда #define выполняет простую текстовую подстановку. В таком случае, не вижу разницы между #define и typedef.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.07.2010, 18:29     зачем часто писать std:: если можно один раз using namespace std? #16
Цитата Сообщение от nekogdamne Посмотреть сообщение
Sanu0074, как я понял, комманда #define выполняет простую текстовую подстановку. В таком случае, не вижу разницы между #define и typedef.
# видите? Значит уже разница. #define подает комманду препроцессору, что PI есть 3,1415

Директива define позволяет связать идентификатор (мы будем называть этот идентификатор замещаемой частью) с лексемой (возможно, что пустой!) или последовательностью лексем (строка символов является лексемой, заключённой в двойные кавычки), которую называют строкой замещения или замещающей частью директивы define.

Например,

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

Препроцессор выполняет грубую предварительную работу по замене замещаемых идентификаторов замещающими строками. В этот момент ещё ничего не известно об именах, поскольку транслятор фактически ещё не начинал своей работы. А потому следует следить за тем, чтобы замещаемые идентификаторы входили в состав объявлений лишь как элементы инициализаторов.

Рассмотрим несколько примеров. Директива препроцессора

#define PI 3.14159
Превращает корректное объявление

float PI;
в синтаксически некорректную конструкцию

float 3.14159;
А следующее определение правильное.

float pi = PI;
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.07.2010, 18:30     зачем часто писать std:: если можно один раз using namespace std? #17
Цитата Сообщение от Sanu0074 Посмотреть сообщение
внимательно читайте текст темы:
зачем часто писать std:: если можно один раз using namespace std?
И где здесь просьба рассказать, что входит в std?
Цитата Сообщение от nekogdamne Посмотреть сообщение
как я понял, комманда #define выполняет простую текстовую подстановку.
Именно.
Цитата Сообщение от nekogdamne Посмотреть сообщение
В таком случае, не вижу разницы между #define и typedef.
Где вы видели, чтобы typedef осуществлял текстовую подстановку?
nekogdamne
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 7
01.07.2010, 18:43     зачем часто писать std:: если можно один раз using namespace std? #18
Lavroff, я имел в виду разницу по функциональности.
Но я уже понял, в чём различие. К примеру, выражение:
C++
1
#define unsigned short int usint
неверное. Вместо него надо использовать
C++
1
typedef unsigned short int usint;
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
01.07.2010, 18:44     зачем часто писать std:: если можно один раз using namespace std? #19
Правильно поняли
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2010, 19:33     зачем часто писать std:: если можно один раз using namespace std?
Еще ссылки по теме:

std:: vs namespace C++
using namespace std C++
namespace std C++

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

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
01.07.2010, 19:33     зачем часто писать std:: если можно один раз using namespace std? #20
Цитата Сообщение от nekogdamne Посмотреть сообщение
C++
1
#define unsigned short int usint
неверное.
Почему же неверное?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define unsigned short int usint
void qq()
{
    unsigned;
}
unsigned()
{
    return 55;
}
int main()
{
    unsigned = 99;
}
:-)
Yandex
Объявления
01.07.2010, 19:33     зачем часто писать std:: если можно один раз using namespace std?
Ответ Создать тему
Опции темы

Текущее время: 05:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru