C++程序设计:原理与实践(进阶篇)15.9 调整内置数组达到STL版本的功能-阿里云开发者社区

开发者社区> 华章出版社> 正文

C++程序设计:原理与实践(进阶篇)15.9 调整内置数组达到STL版本的功能

简介:

15.9 调整内置数组达到STL版本的功能


我们之前反复指出内置数组的不足之处:它们动不动就会隐式转换成指针,它们不能通过赋值操作进行拷贝,它们不知道自己的大小(见13.6.2节),等等。我们也指出了它们最大的优点:它们近乎完美地利用了物理内存。

为了综合二者之长,我们可以创建一个具有数组优点而没有其不足的array容器。array的一个版本已经作为技术报告的一部分引入C++标准中。由于技术报告中的特性并不要求所有C++实现都必须包含,因此你所使用的实现可能并不包含array。但其思路是简单有用的:

 

这个定义并不完整,也不完全符合C++标准,但可展示设计思想。如果你使用的C++实现并未提供标准array,它也可提供一个有用的定义。如果C++实现提供了标准array,它应该在<array>中。注意由于array<T, N>“知道”它的大小为N,我们可以提供(我们也确实提供了)赋值==、!=等操作,就像vector一样。

作为一个示例,我们把array和15.4.2节中STL版high()结合起来使用:

 

 

注意当我们编写high()时,并没有考虑array。之所以high()可以与array一起使用是因为这二者都是按照标准的习惯进行定义的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接