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

Использование using namespace std; - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.73
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 00:50     Использование using namespace std; #1
Я где-то слышал что использование такой диррективы на корню убивает пространство имен, но ведь только в boost и stl есть похожие классы, если я не использую boost, то в loki или другой библиотеке вроде нет таких команд. Посоветуйте как пользоваться это диррективой, как закончить блок using. Просто мне начала казаться что
C++
1
std::multiset(std::string,std:string)
плохо выглядит, хотя были примеры жестче.
что-то вроде
C++
1
boost::shared_ptr<std::varray<std::string>> p;
?
Расскажи что об этом думаете?

Добавлено через 5 минут
В похожей теме напоролся на можно использовать
Можно вместо всего пространства имен подключать отдельные функции.
C++
1
2
3
using std::cout;
using std::cin;
// и т.д.
Имеет смысл, если я стремлюсь, к профессиональному, удобоваримому коду?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 00:50     Использование using namespace std;
Посмотрите здесь:

C++ зачем часто писать std:: если можно один раз using namespace std?
C++ using namespace std
using namespace std; C++
C++ что использовать std::cout или просто using namespace std?
std:: vs namespace C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
29.03.2013, 01:05     Использование using namespace std; #2
Цитата Сообщение от vbloodv Посмотреть сообщение
Расскажи что об этом думаете?
Объявляю войну using namespace zzz VS using zzz:xxx открытой!

Ну просто почему-то на многих действует using namespace std как красная тряпка и они начинают рассказывать как это не хорошо писать вот так одну строчку, когда они мучаются и перечисляют всё-всё-всё что юзают из std. От части то оно лучше когда перечисляешь - сразу видно хотябы что именно ты используешь, но это и правда утомительно когда что-то пишеться для себя на раз.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 01:10  [ТС]     Использование using namespace std; #3
Цитата Сообщение от Gepar Посмотреть сообщение
это и правда утомительно когда что-то пишеться для себя на раз.
А если всегда не для себя, лучше использовать сложные конструкции (как в моем примере массив из строк, или умный указатель на вектор) ?
Две дороги видны библиотеки, но сложная конструкция.
Не видны библиотеки и непонятно что откуда берется, но все эстетически отображено как на программах высокого уровня?
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
29.03.2013, 01:12     Использование using namespace std; #4
не нужно использовать юзинги в заголовочных файлах без необходимости. Потому что в тех проектах, куда подключается этот заголовок, тоже будут эти юзинги, а пользователи этих заголовков могут этого не захотеть.
А cpp файлах уже смотрите сами, если не используете других пространств имён.
В C# вообще миниум штук 5 юзингов.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 01:17  [ТС]     Использование using namespace std; #5
Цитата Сообщение от SummerRain Посмотреть сообщение
не нужно использовать юзинги в заголовочных файлах без необходимости.
Да, действительно грамотный совет, чтобы метаданные не мешать с заголовками. А в сипипи можно думать. И последний из не отвеченных вопросов можно как то прекратить использование директивы (end using)
Friday
ну и долго меня небыло...
 Аватар для Friday
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
29.03.2013, 01:18     Использование using namespace std; #6
ну вообще - от ситуации зависит, лично я чаще всего пишу в одну строчку
а если много инклудов, и видно что namespace переплетатся будут, то приходится лепить std::

З.Ы. ИМХО
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
29.03.2013, 01:20     Использование using namespace std; #7
Цитата Сообщение от vbloodv Посмотреть сообщение
И последний из не отвеченных вопросов можно как то прекратить использование директивы (end using)
нет. Это не define чтобы можно было отменить.

Цитата Сообщение от vbloodv Посмотреть сообщение
чтобы метаданные не мешать с заголовками.
Слово "метаданные" здесь не очень подходит.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 01:25     Использование using namespace std; #8
http://www.cyberforum.ru/blogs/34326/blog275.html
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 01:29  [ТС]     Использование using namespace std; #9
Цитата Сообщение от Gepar Посмотреть сообщение
нет. Это не define чтобы можно было отменить.
Значит, я правильно пользовался гуглом, раз не нашел.

Цитата Сообщение от Gepar Посмотреть сообщение
Слово "метаданные" здесь не очень подходит.
Не совсем верно сформулировано предложение, правильнее сказать чтобы к метаданным не добавлять дополнительных директив.

Цитата Сообщение от Friday Посмотреть сообщение
З.Ы. ИМХО
Я наверное остановлюсь на неиспользовании, но все равно спасибо.

Думаю вопрос закрыт.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
29.03.2013, 02:10     Использование using namespace std; #10
Цитата Сообщение от vbloodv Посмотреть сообщение
И последний из не отвеченных вопросов можно как то прекратить использование директивы (end using)
Можно.
C++
1
2
3
4
5
while(...)
{
    using std::string;
    ...
}
Таким образом using будет действителен только внутри данного блока.
Что касается шаблонов вроде
C++
1
boost::shared_ptr<std::vector<std::string>> p;
то по возможности всё это следует прятать используя typedef.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 02:20  [ТС]     Использование using namespace std; #11
Цитата Сообщение от rangerx Посмотреть сообщение
то по возможности всё это следует прятать используя typedef.
Цитата Сообщение от rangerx Посмотреть сообщение
Таким образом using будет действителен только внутри данного блока.
Жалко нельзя поставить два +
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
29.03.2013, 08:12     Использование using namespace std; #12
Цитата Сообщение от rangerx Посмотреть сообщение
Что касается шаблонов вроде
C++
1
boost::shared_ptr<std::vector<std::string>> p;
то по возможности всё это следует прятать используя typedef.
А можно и тот же using использовать:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <boost/shared_ptr.hpp>
 
int main() {
   typedef boost::shared_ptr<std::vector<std::string>> tPtr; // typedef
   using uPtr = boost::shared_ptr<std::vector<std::string>>; // using 
 
   boost::shared_ptr<std::vector<std::string>> p1; // Полностью тип
   tPtr p2;
   uPtr p3;
   
   std::cout << "p1 is : " << typeid(p1).name() << std::endl;
   std::cout << "p2 is : " << typeid(p2).name() << std::endl;
   std::cout << "p3 is : " << typeid(p3).name() << std::endl;
   
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 08:43     Использование using namespace std;
Еще ссылки по теме:

Что означает using namespace std? C++
using namespace std C++
namespace std C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
29.03.2013, 08:43     Использование using namespace std; #13
Для справки: include <?> для cout
Конфликт: Возникает ошибка с using namespace std;
Конфликт: "error C2872: неоднозначный символ" при переменной count
Конфликт: Как значение массива другому массиву?
Ну и просто так: Почему неверно писать #include <iostream.h>?
Yandex
Объявления
29.03.2013, 08:43     Использование using namespace std;
Ответ Создать тему
Опции темы

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