1、静态数组
处理静态数组:
#define N 10 //数组的长度N在编译时已知
T static_array[N];
这里,数组的长度在编译时是已知的并且不会改变。当然,为了使用具有边界检查的安全数组,也可以vector模板,并在一个构造函数中指定它的长度:
scpp::vector vect(N);
它的效果与静态数组完全相同,但问题在于效率。静态数组是在堆栈上分配内存,而vector模板是在构造函数中用new操作符分配内存的,速度相对慢一些。如果运行时效率至关重要,最好使用array模板,即
namespace scpp
{
//固定长度的数组
template <typename T, unsigned N>
class array
{
public:
typedef unsigned size_type;
//最常用的构造函数
array() {};
explicit array(const T& initial_value)
{
for(size_type i=0; i<size(); ++i)
data_[i] = initial_value;
}
//注意:这里并没有提供拷贝构造函数和赋值操作符
//依赖的是编译器生成的这些方法的默认