Долгое время на начальном этапе разработки игрового движка у меня была тенденция использовать следующую директиву в C++

использование пространства имен std;

Директива using делает методы из пространства имен std доступными, как если бы они были локальными по области действия. Так, например, вместо того, чтобы писать следующее:

std::vector‹int› myNumber;

Вы можете просто написать это как:

вектор‹int› мойЧисло;

Это было очень удобно, так как мне не нужно было указывать std:: каждый раз, когда я хотел использовать операцию из библиотеки.

Однако оказывается, что использование использования пространства имен std в вашем движке совсем не лучшая идея. Вместо использования приведенной выше директивы вы должны напрямую ссылаться на пространство имен, как показано ниже:

std::cout<<"hello there"<<std::endl;
std::string myName="harold";
std::vector<float> myFloat=1.3;

void calculate(std::vector<float> uV);

Я знаю, что писать std каждый раз утомительно, но вам нужно преодолеть это и начать ссылаться на пространство имен.

Пространства имен в основном используются для организации более крупных программных компонентов, например, в игровом движке. Поэтому обязательно используйте их все в своем двигателе. Например, предположим, что ваш движок будет использовать пространство имен MyEngine, а затем, когда вы создаете класс, поместите этот класс в пространство имен, как показано ниже:

//In header file
namespace MyEngine{
class Point{
	//…
	void coordinates();
	}
}

//In implementation file
namespace MyEngine{
	void Point::coordinates(){
	//…
	}
}

//so if you want to call the class, reference its namespace
void main(){
	MyEngine::Point* myPoint=new Point();
	myPoint->coordinates();
}

Это предотвратит любые конфликты с любой другой библиотекой, которая может использовать те же имена.