数组的选择--固定大小数组模板array存在的意义!

简介:

 主要就是为了使用的方便,更加容易和algorithm的算法结合的更好!

#include <iostream> 
#include <ctime> 
#include <array> 

#include <functional> 
#include <algorithm> 

#include <boost\array.hpp> 

using namespace std; 
using namespace std::tr1; 

int getRand() 
{ 
   return rand()% 90 + 10; // 保证是两位数! 
} 

template < typename Iter > // 只支持int,这里只是用来演示 
void print( Iter first,Iter last ) 
{ 
   copy( first,last, ostream_iterator< int >( cout," ") ); 
   cout<< endl; 
} 

int main() 
{ 
   srand( (unsigned)time( NULL ) ); 

   int test1_array[20]; 
   generate( test1_array,test1_array + 20, getRand ); 
   print( test1_array,test1_array + 20 ); 
   sort( test1_array,test1_array+20, greater<int>() ); 
   print( test1_array,test1_array + 20 ); 
   // 无法用print倒着输出! 

   cout<<"大小是"<< sizeof(test1_array) / sizeof(int) <<endl; 

   array< int , 20 > test2_array; 
   generate( test2_array.begin(), test2_array.end(), getRand ); 
   print( test2_array.begin(), test2_array.end() ); 
   sort( test2_array.begin(), test2_array.end() ); 
   print( test2_array.begin(),test2_array.end() ); 
   cout<< "大小是"<<test2_array.size()<<endl; 

   // 优势,倒着输出,如此简单! 
   print( test2_array.rbegin(), test2_array.rend() ); 

   boost::array< int, 24 > test3_array; 
   generate( test3_array.begin(), test3_array.end(), getRand ); 
   print( test3_array.begin(),test3_array.end() ); 
   print( test3_array.rbegin(),test3_array.rend() ); 

   return 0; 
} 

// 另外boost::array和tr1::array使用一样! 
通过代码相信大家都已经看到了,使用这种固定数组模板能够用起来更方便,而且在效率上也不会有太大的开销。 
个人对此的一些建议: 
1.当我们只是把一个数组用来存放一些东西而且是固定大小的时候我们都使用C风格的数组。 
2.如果我们对它的操作频繁涉及到很多算法的时候,我们可以考虑array模板! 
3.当大小需要变动的时候建议使用其它标准容器!

目录
相关文章
|
移动开发 监控 小程序
钉钉工作台开放能力建设阶段性总结
工作台的平台化开放能力建设已经走了近3年的时间,包括定制工作台的开放、工作台模板的开放、工作台组件的开放等等。本文主要是对过程中一些关键能力的总结和思考,欢迎交流。工作台的类型工作台作为企业业务数字化的统一门户,是组织用于提升管理效率、实现业务在线的平台。工作台的组织就是钉钉上的组织,针对不同的组织规模,提供了多种类型工作台:角色工作台、行业工作台和自定义工作台。角色工作台是对不同的角色,例如财务
1408 0
钉钉工作台开放能力建设阶段性总结
|
10月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度
YOLOv11改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度
452 11
YOLOv11改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度
|
10月前
|
机器学习/深度学习 编解码 移动开发
YOLOv11改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
YOLOv11改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
311 7
YOLOv11改进策略【Conv和Transformer】| TPAMI-2024 Conv2Former 利用卷积调制操作和大核卷积简化自注意力机制,提高网络性能
|
10月前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
人工智能 弹性计算 Kubernetes
【云故事探索】NO.10:厦门立马耀的数字化转型之路
厦门立马耀网络科技有限公司在数字化转型中,凭借敏锐的市场洞察和技术创新,将云计算深度融合于业务。其品牌“蝉妈妈”为中小企业提供全方位数字营销解决方案,成为行业标杆。面对快速变化的市场需求,公司通过与阿里云合作,构建高可靠性计算平台,提升效率,并利用AI技术赋能客户,推动业务多元化发展,展现了云计算在企业成长中的巨大潜力。
阿里云国际版购买了服务器后如何下载发票?
阿里云国际版购买了服务器后如何下载发票?
如何制作一个企业网站,建设网站的基本步骤有哪些?
企业网站是企业的门面和名片,决定网民对企业的第一印象,因此,现在很多公司想做一个属于自己网站,但是不知道怎么做,更不知道从何做起,更别说做成了。为了能够让大家清楚如何做一个企业网站,现在给大家分享一下企业搭建网站的流程,一般需要4个步骤,也可以说是4种东西,分别是域名、服务器、建站系统、网站模板。
704 3