Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/237: Рейтинг темы: голосов - 237, средняя оценка - 4.92
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
1

Вопрос про std::

07.03.2010, 19:01. Показов 44139. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
 std::cout << "Hello, world!" << std::endl;
а можно
C++
1
 cout << "Hello, world!" <<endl;
std пространство имен...
где про это можно почитать не нашел..
и почему оба варианта работают?
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2010, 19:01
Ответы с готовыми решениями:

про std
Доброго времени суток. Написал достаточно большую программу и тут понадобилось удалить файл.......

Вопрос по std::list
Не произойдёт ли здесь какая-нибудь ошибка после удаления элемента из списка? std::list&lt;int&gt;...

Теоретический вопрос по std::map
Всем привет. Подскажите пожалуйста как std::map резервирует память и как в памяти выглядят его...

Про позднюю инициализацию std::thread
Я занимаюсь проигрыванием MIDI-файлов. В общем: есть мультимедиа-таймер, который каждую...

21
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 19:07 2
Лучший ответ Сообщение было отмечено как решение

Решение

Krist_ALL, скорее всего у вас или Borland Builder 6 или MS Visual C++ 6.0.
Раньше пространств имен не было, поэтому для того чтобы использовать потоки cin/cout необходимо было только подключить библиотеку iostream.h.
Но потом сделали пространства имен и во всех современных средах они поддерживаются, поэтому для использования содержимого пространства необходимо его подключить или обращаться к ним по имени пространства.
Поэтому первый вариант будет работать только в новых IDE, второй или в старых, или в новых, при условии. что будет использован один из этих кодов сразу после после подкючения библиотек
C++
1
using namespace std;
или
C++
1
using std::cout;
3
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 19:13  [ТС] 3
дайте плз ссыль где прочитать про std
и зачем оно нужно чтоб написано было)
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 19:15 4
Krist_ALL, http://en.wikipedia.org/wiki/C... rd_Library
1
17 / 19 / 4
Регистрация: 03.02.2010
Сообщений: 247
07.03.2010, 19:16 5
Цитата Сообщение от Krist_ALL Посмотреть сообщение
C++
1
 std::cout << "Hello, world!" << std::endl;
а можно
C++
1
 cout << "Hello, world!" <<endl;
std пространство имен...
где про это можно почитать не нашел..
и почему оба варианта работают?
Почитать это можно практически в любой книге по С++.

Первый вариант кода будет работать в любом случае, так как std::cout это полный путь к стандартной функции библиотеки std. функция cout отвечает за вывод информации в консоль.

Второй вариант кода- будет работать и его можно будет использовать если в начале программы вместе с заголовочным файлом #include<iostream>, написать еще и использование контекста using std::cout- после обьявления этой строчки функцию cout, компилятор будет распознавать как будто было введено std::cout. проще всего включить в заголовок полное пространство имен std. следующим образом: using namespace std;
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 19:22 6
Цитата Сообщение от al072 Посмотреть сообщение
Первый вариант кода будет работать в любом случае, так как std::cout это полный путь к стандартной функции библиотеки std
al072, вы не заставите BC3.1 воспринять строку
C++
1
std::cout << "Hello, world!" << std::endl;
Прочитайте мой пост
1
17 / 19 / 4
Регистрация: 03.02.2010
Сообщений: 247
07.03.2010, 19:57 7
Цитата Сообщение от M128K145 Посмотреть сообщение
al072, вы не заставите BC3.1 воспринять строку
C++
1
std::cout << "Hello, world!" << std::endl;
Прочитайте мой пост
Что такое ВСЗ?
без включения в заголовок пространства имен std, cout мы спокойно можем использовать с разрешением контекста! то есть std::cout.
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 20:08 8
BC3.1 - Borland C++ 3.1 1992 года выпуска.
Вопрос про std::

al072, Вы считаете разумным продолжать эту дискуссию?
1
17 / 19 / 4
Регистрация: 03.02.2010
Сообщений: 247
07.03.2010, 20:13 9
Цитата Сообщение от M128K145 Посмотреть сообщение
BC3.1 - Borland C++ 3.1 1992 года выпуска.
Вложение 23496
al072, Вы считаете разумным продолжать эту дискуссию?
M128K145, я извиняюсь!!! просто мы говорим о разных средах.. я имею ввиду VC++(VS2008).

В таком случае дальнейшие обсуждения не имеют смысла..
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 20:16 10
al072, а ведь стоило всего лишь внимательно прочитать

Цитата Сообщение от M128K145 Посмотреть сообщение
Раньше пространств имен не было, поэтому для того чтобы использовать потоки cin/cout необходимо было только подключить библиотеку iostream.h.
Но потом сделали пространства имен и во всех современных средах они поддерживаются, поэтому для использования содержимого пространства необходимо его подключить или обращаться к ним по имени пространства.
Поэтому первый вариант будет работать только в новых IDE, второй или в старых, или в новых, при условии, что будет использован один из этих кодов сразу после после подкючения библиотек
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.03.2010, 13:27 11
раз темка открыта и свой вопрос задам.
вот на форуме вижу что обзывают ламерством вот это
Цитата Сообщение от Krist_ALL Посмотреть сообщение
cout << "Hello, world!" <<endl;
и гвоорят что надо так
Цитата Сообщение от Krist_ALL Посмотреть сообщение
std::cout << "Hello, world!" << std::endl;
вопрос:почему?
ведь легко вначале написать строк и никогда не писать лишнее,раз уж это только стиль программирования, то притензий никакой не должно быть.
1
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 13:44 12
На самом деле пиши как тебе удобно, просто используют std::cout что бы не засорять глобальную область имен используя директиву using;
Но на мой взгляд если у тебя идет например 10 строк cout то постоянно писать std::cout не очень то и удобно, я в таких случаях просто использую оператор using иногда даже локально:

C++
1
2
3
4
5
6
void someFunc()
{
    using std::cout // cout видно только в текущей функции.
    cout<<"blabla";
    cout<<"blablabla";
}
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.03.2010, 15:10 13
Цитата Сообщение от Amarted Посмотреть сообщение
иногда даже локально:
вот это не понял
Цитата Сообщение от Amarted Посмотреть сообщение
Но на мой взгляд если у тебя идет например 10 строк cout то постоянно писать std::cout не очень то и удобно
вот вот...т.к. у меня всегда так я юзаю этот оператор

Цитата Сообщение от Amarted Посмотреть сообщение
что бы не засорять глобальную область имен
а по конкретнее
1
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 15:33 14
когда ти используешь директиву using namespace std;
все имена кторые есть в этом пространстве(std) становятся видимыми, и если у тебя в программе встретиться такоеже имя которое определено в пространстве имен std то это вызовет конфликт имен;
использовать локально, это я имелл в виду
C++
1
2
3
4
5
6
7
8
9
void someFunc()
{
        using std::cout // cout видно только в текущей функции.
        cout<<"blabla";
        cout<<"blablabla";
}
// А здесь за пределами функции, то есть вне блока { } 
// cout<<"blabla" не сработает нужно или писать 
// std::cout<<"blabla" или опять использовать using.
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.03.2010, 15:56 15
МедведЪ, смысл примерно тот же, что и в ООП:
Незачем наследоваться от класса, если нужен только один метод, проще создать объект этого класса и через него обращаться к методу. Иначе тянется куча всякого ненужного мусора, которая может только навредить
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.03.2010, 18:41 16
Цитата Сообщение от M128K145 Посмотреть сообщение
Иначе тянется куча всякого ненужного мусора, которая может только навредить
а что за мусор?...

Добавлено через 1 минуту
хотя если код большой,в этот момент будет труднее,правильно думаю,M128K145?
1
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 20:42 17
Мусор это то что ты включаешь с помощью директивы using, но совсем не используешь в программе.
То есть помимо cout и cin в пространстве имён std, есть еще много чего не нужного в данном коде.
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.03.2010, 20:43 18
Amarted, аа все понятно..тогда правильно мыслю....думаю в это в больших программах так надо...
1
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 20:59 19
Ну считается как правило хорошего тона использовать такой способ везде где это возможно;
Но всё равно, если даже тебе не удобно писать каждый раз std::cout допустим, то рпедпочтительнее использовать using std::cout; чем using namespace std;
1
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 16
22.05.2017, 16:45 20
Терзает вопрос.
Слишком частое разрешением контекста, например, std::cout, будет ли снижать производительность, чем в случае единоразового использования using std::cout, ну или на худой конец using namespace std и далее по тексту только cout?
Ведь налицо же обильные обращения к пространтсву имен не должно остаться незаметным для производительности.
0
22.05.2017, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2017, 16:45
Помогаю со студенческими работами здесь

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

STL std::set, std::pair, std::make_pair
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы....

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

Вопрос по std::map
В качестве хэш-таблицы для строк (AnsiString) я использовал std::map. От таблицы мне нужно было ещё...

Немного про std::string
Привет, читал про std::string на разных сайтах. 1. Там говорят, С++ 11 гарантирует, что...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru