<iostream>
содержит элементы из namespace
std
. Вы можете рассматривать пространство имен как группу методов, определений классов и переменных. Использование пространств имен облегчает их группирование по функциональности.
Директива using
просто импортирует все содержимое пространства имен в глобальном пространстве имен. Но вам не нужно его использовать:
Вы можете использовать:
using namespace std;
cout << "whatever";
или
std::cout << "whatever";
Причина этого в том, что компилятор не знает, что cout
находится вне пространства имен.
Думайте об этом как объявлено как:
//file <iostream>
namespace std
{
//declaration of cout
}
//file <vector>
namespace std
{
//declaration of vector
}