Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

29.03.2013, 00:50. Просмотров 3338. Ответов 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;
// и т.д.
Имеет смысл, если я стремлюсь, к профессиональному, удобоваримому коду?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 00:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование using namespace std; (C++):

что использовать std::cout или просто using namespace std? - C++
Приветствую! Сейчас учу С++, постигаю азы так сказать. В арсенале две книги - Джефф Кент, &quot;Основы программирования &quot; и Х.М....

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

Пространство имен - namespace std или std:: - C++
В каких случая лучше писать (std::cout) или просто прописать (namespace std) и почему ?

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

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

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

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

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

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

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

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

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

Думаю вопрос закрыт.
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
29.03.2013, 02:10 #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.
2
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
29.03.2013, 02:20  [ТС] #11
Цитата Сообщение от rangerx Посмотреть сообщение
то по возможности всё это следует прятать используя typedef.
Цитата Сообщение от rangerx Посмотреть сообщение
Таким образом using будет действителен только внутри данного блока.
Жалко нельзя поставить два +
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
29.03.2013, 08:12 #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;
}
0
Croessmah
Ушел
Эксперт CЭксперт С++
13563 / 7714 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
29.03.2013, 08:43 #13
Для справки: include <?> для cout
Конфликт: Возникает ошибка с using namespace std;
Конфликт: "error C2872: неоднозначный символ" при переменной count
Конфликт: Как значение массива другому массиву?
Ну и просто так: Почему неверно писать #include <iostream.h>?
1
29.03.2013, 08:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 08:43
Привет! Вот еще темы с ответами:

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

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

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

Что означает using namespace std? - C++
Что означает в с++? using namespace std объясните пожалуйста простым языком))


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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