<
:0<7:!&!
&
>
:0>7:!&!
&
'
<,,!测试命名空间 <, ::是作用域解析运算符
>,,!
&
命名空间可以嵌套定义:
<
"0&!
>
&
&
一个 namespace 是指一个具名的范围(named scope)。namespace 被用来将相关的声
明划归在一起,将不相关的代码部分隔开。命名空间只是命名了一个特殊的作用域,当程
序很大,而且需要多人合作的时候,命名空间就显得特别的重要。比如 2 个程序员 A,B 在
同一个程序中定义了函数 pop(),如果没有使用命名空间,则会出错,而且这种错误难以检
测出来。为了安全起见,他们可以定义不同的命名空间 A 和 B,在用的时候可以使用
A::pop()和 B::pop()来区分。
在 STL 中,标准库的全部成员在预先定义的命名空间 std 中。如果要用类模板 vector
,有两种方法:一是在程序的前面添加预处理指令:
'
0!
第二种方法是:
'
0,,'!
动态绑定和静态绑定
所谓绑定是指,对于参与多态行为的类型,他们具有多态行为的接口是在公共基类的
设计中就预先确定的。而非绑定则对于参与多态行为的类型,他们的接口没有预先定义。
在 C++中通过继承实现的多态是动态绑定,通过模板实现的多态是静态绑定。动态绑
定的接口是在运行期间(动态)完成的,静态绑定的接口是在编译期间(静态)完成的。
好了,有了以上的知识我们可以来学习 STL 了。
STL 的组成
STL 有三大核心部分:容器(Container)、算法(Algorithms)、迭代器(Iterator),
容器适配器(container adaptor),函数对象(functor),除此之外还有 STL 其他标准组件。
容器:装东西的东西,装水的杯子,装咸水的大海,装人的教室……STL 里的容器是可容