设为首页 加入收藏

TOP

3.3.3 使用建议
2013-10-07 13:13:52 来源: 作者: 【 】 浏览:67
Tags:3.3.3 使用 建议

3.3.3  使用建议

scoped_array没有给程序增加额外的负担,用起来很方便轻巧。它的速度与原始数组同样快,很适合那些习惯于用new操作符在堆上分配内存的程序员。但scoped_array的功能很有限,不能动态增长,也没有迭代器支持,不能搭配STL算法,仅有一个纯粹的"裸"数组接口。而且,我们应当尽量避免使用new[]操作符,它比new更可怕,是许多错误的来源,因为

  1. int *p = new int[10];  
  2. delete p; 

这样的代码完全可以通过编译,无论是编译器还是程序员都很难区分出new[]和new分配的空间,而错误地运用delete将导致资源异常。

在需要动态数组的情况下我们应该使用std::vector,它比scoped_array提供了更多的灵活性,而只付出了很小的代价。使用std::vector,之前的例子可以写成:

  1. vector<int> sa(100, 5);  
  2. sa[10] = sa[20] + sa[30]; 

很明显,std::vector只用一条语句就完成了scoped_array三条语句的初始化和赋值工作。因为vector有丰富的成员函数来操纵数据,能够使代码更加简单明了,易于维护。

除非对性能有非常苛刻的要求,或者编译器不支持标准库(比如某些嵌入式操作系统),否则本书不推荐使用scoped_array,它只是为了与老式C风格代码兼容而使用的类,它的出现往往意味着你的代码中存在着隐患。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.2 操作函数 下一篇3.4.1 类摘要

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: