C ++有一个标准库,其中包含用于构建应用程序(如容器,算法等)的常用功能。如果它们使用的名称是公开的,例如,如果它们全局定义了队列类,则您将永远无法在没有冲突的情况下再次使用相同的名称。因此,他们创建了一个命名空间std来包含此更改。
using命名空间语句只是意味着在它存在的范围内,使std命名空间下的所有内容都可用,而不必在每一个之前都加上std ::前缀。
虽然这种做法对于示例代码来说还可以,但是将整个std命名空间拖入全局命名空间并不好,因为它违反了命名空间的目的并可能导致名称冲突。这种情况称为命名空间污染。