静态数组的索引越界问题

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;
		}

		//注意:这里并没有提供拷贝构造函数和赋值操作符
		//依赖的是编译器生成的这些方法的默认
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值