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

using namespace std - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ std::copy из vector<double> в *double, непонятный warning http://www.cyberforum.ru/cpp-beginners/thread935228.html
double myD={10,20,30,40,50,60,70}; std::vector<double> myvector (7); std::copy ( myD, myD+7, myvector.begin() ); std::copy ( myvector.begin(), myvector.end(), myD); На строку 5 ругается "warning C4996: 'std::_Copy_opt' was declared deprecated". В чем проблемма?
C++ class/string/ifstream/ofstream Доброе время суток всем!! Люди я уперся в стену и буду признателен за помощь date.h #pragma once #include <iostream> #include <fstream> using namespace std; class date { http://www.cyberforum.ru/cpp-beginners/thread935207.html
C++ Подключение С библиотеки (.so) к проекту С++
С++ не хочет подключать сишную библиотеку, пробовала подключить и методами gcc из консоли, и методами QT, создавала makefile, все едино. Писать при каждом вызове библиотечной функции extern "C" тоже не вариант, слишком много вызовов этих самых функций в разных файлах, копаться неделю можно. Может, есть какие-то более простые методы решения проблемы?
Кормен. Задача. Генератор случайных чисел C++
Есть задача из Кормена, но я не знаю как к ней подступиться, расчитываю на помощь. Есть генератор случайных чисел BiasedRandom который выдает 0 с вероятностью p, и 1 - с вероятностью 1 - p. Значение p не известно. Нужно сформулировать алгоритм, который будет использовать BiasedRandom и выдавать 0 либо 1 с вероятностью 1/2. Как такое нужно делать? Мне только пришла в голову идея с...
C++ Можно ли удалить объект std::vector, а данные оставить? http://www.cyberforum.ru/cpp-beginners/thread935151.html
void fun(double *p) { std::vector<double> myvector (5); p=myvector.data(); return; } После выполнения p указывает на освобожденную память. Делать копию не хочется. Можно ли сохранить данные из вектора?
C++ Шаблоны, векторы и указатели на функции template <typename T> class A { public: A(std::vector<T>); private: std::vector<T> func1(); std::vector<T> func2(); //... std::vector<T> func10(); подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,940
Записей в блоге: 2
Завершенные тесты: 1
08.08.2013, 13:48     using namespace std
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Обьясните пожалуйста понятным языком, что такое пространство имен,
Представьте себе Вашу файловую систему без каталогов - всё в корневике (в глобальном пространстве имен).
Какие проблемы могут возникнуть?
Самое первое - нельзя иметь два файла с одним именем на самом деле можно, но сейчас не об этом потому как возникнет конфликт имен.
Теперь допустим, что всё же у нас два разных файла с одним именем (файл1) оказались в корневике и Вам начальник со свирепым выражением лица, крича и разбрызгивая во все стороны свою слюну кричит "Открой файл1", но вот беда - их два и какой открывать? У Вас по сути один нормальный путь - спросить какой именно, собственно компилятор так и делает - выдает ошибку с текстом на подобии "Имя 'такое-то' двусмысленно".
А если бы всё лежало по папкам, то коллизий бы не возникло.
Вам бы сказали открыть файл "файл1" из каталога "каталог1" ( каталог1::файл1 )
или открыть файл "файл1" из каталога "каталог2" ( каталог2::файл1 )

А теперь к примеру на программе:
А теперь представьте, что написали Вы программу, всё работает - класс, всё довольны!
И вот решили вдруг, что нужно еще сделать пару фишек. Нашли стороннюю библиотеку, которая отлично подходит для реализации этих самых "фишек", но вот беда в ней есть классы с таким же именем как и у Вас. Что делать? Создавать копию Вашего класса, но с другим именем? Ну это жестко.
Вот пространства имен призваны решать такие проблемы. Например, вся стандартная библиотека, содержится в одном пространстве имен std, а подключаемые файлы так же определяют свои пространства имен, например библиотека boost находится в пространстве имен boost. Если писать boost::vector, то будет понятно, что используется вектор из библиотеки boost, а не std.
Что касается using namespace такое-то, это означает примерно следующее:
"Использовать пространство имен такое-то в этой области видимости".
То есть мы "скидываем" всё содержимое пространства имен в "текущую" область видимости, тем самым её засоряя ( пример про корневой каталог без разделения на папки ).

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