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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.73
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

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

29.03.2013, 00:50. Просмотров 3012. Ответов 12
Метки нет (Все метки)

Я где-то слышал что использование такой диррективы на корню убивает пространство имен, но ведь только в 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;
Посмотрите здесь:

std:: vs namespace - C++
Тема не для холивара, объясните пожалуйста чем лучше std:: а не using namespace std ? Без namespace std, возникает такая ошибка, но...

Using namespace std - C++
В чем отличие, если один cout (или что-то другое) будет в std, а другой stdd, для чего вообще using namespace? Уже везде где только можно...

using namespace std - C++
Обьясните пожалуйста понятным языком, что такое пространство имен, и зачем нужна эта команда или std::

using namespace std - C++
using namespace std; скажите плиз что означает ета строка и для чего она нужна?

namespace std - C++
Добрый день. Вычитал что могу использовать любой namespace. Но в другом месте написано что если не использовать std, то не сможет...

using namespace std; - C++
Здравствуйте. Я заметил, что многие программисты стараются избегать этой строчки в своих программах. С чем это связанно? И еще...

Возникает ошибка с using namespace std; - C++
#include &quot;stdio.h&quot; #include &quot;string.h&quot; #include &quot;math.h&quot; #include &quot;stdlib.h&quot; #include &quot;stdafx.h&quot; #include &quot;iostream.h&quot; using...

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

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

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

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

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

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

Думаю вопрос закрыт.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,909
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
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 02:20  [ТС]     Использование using namespace std; #11
Цитата Сообщение от rangerx Посмотреть сообщение
то по возможности всё это следует прятать используя typedef.
Цитата Сообщение от rangerx Посмотреть сообщение
Таким образом using будет действителен только внутри данного блока.
Жалко нельзя поставить два +
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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 объясните пожалуйста простым языком))

На что влияет расположение строчки using namespace std; ? - C++
В учебнике вывод предлагают делать так: 1-ый способ: #include &lt;iostream&gt; int main() { std::cout &lt;&lt; &quot;Hello World!&quot; &lt;&lt;...

Функции из заголовочника cstring размещены в namespace std ? - C++
Столкнулся с таким кодом в учебнике Стивена Праты (12 глава, стр. 641-615): // string1.h -- fixed and augmented string class...

#include <list> - конфликт using namespace std с другими инклюдами - C++
Всем привет. Появилась надобность использовать списки, однако #include &lt;list&gt; подключается только вместе с using namespace std. Мои...

Использование namespace - C++
Добрый день, есть ли разница в подходах ниже: //Foo.cpp using namespace A; Foo::Foo()


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 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;
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru