Почему бы вам не включить , если вы уже включили использование пространства имен std
Посмотрите на этот URL: https://en.cppreference.com/w/cpp/header
Тамболее 100 файлов заголовков доступны для вашего использования.
ИМХО, путаница, которую вы испытываете, заключается в том, что эти же заголовки 100+ ТАКЖЕ доступны для авторов заголовков, и они также имеют доступ к заголовкам, обычно не публикуемым в стандарте.В результате, например, когда вы или я включаем , некоторая косвенная часть этого включения может также «вставлять» .
Я рекомендую вам не включать "using namespace std" в ваш код.Его использование не вызвало намеренное «скрытое / косвенное» включение , и, возможно, не будет в следующей реализации.
Я на g ++ v7.3.Я скоро обновлюсь до текущей версии g ++ (я думаю, 9.x?). Вы не можете полагаться на включение , если только вы явно не включите его.
это работает для меня, но я хочучтобы понять, почему это работает, а другое нет.
Просто удача ... Я думаю, что плохо, если из-за этого у тебя появилось несколько вредных привычек.
Если ваш компилятор поддерживает -std = c ++ 17 или лучше, у него есть новая функция, которая мне нравится.Новая функция позволяет сразу после включения заголовка указать, какая функция в этой библиотеке мне нужна.Это выглядит так:
#include <iostream>
using std::cout, std::cerr, std::endl, std::flush,
std::hex, std::dec, std::cin;
#include <iomanip>
using std::setw, std::setfill;
#include <string>
using std::string, std::to_string;
#include <thread>
using std::thread, std::this_thread::sleep_for;
#include <vector>
using std::vector;
Ваши собственные библиотеки могут обрабатываться аналогично:
#ifndef DTB_ENG_FORMAT_HH
#include "../../bag/src/dtb_eng_format.hh"
using DTB::EngFormat_t;
#endif
#ifndef DTB_PPLSEM_HH
#include "../../bag/src/dtb_pplsem.hh"
using DTB::PPLSem_t;
#endif
#ifndef DTB_ENG_FORMAT_HH
#include "../../bag/src/dtb_eng_format.hh"
#endif
#ifndef DTB_ASSERT_HH
#include "../../bag/src/dtb_assert.hh"
#endif
Я пытаюсь отследить небольшой набор из них и собрать их вфайл.Я использую большие списки, когда начинаю новую работу, и тривиально удаляю «неиспользуемые» функции (когда я хочу опубликовать свои усилия).