数组的选择--固定大小数组模板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.当大小需要变动的时候建议使用其它标准容器!

目录
相关文章
|
7月前
|
Python
使用array()函数创建数组
使用array()函数创建数组。
134 3
|
5月前
|
前端开发
let array = [{id:‘001‘,name:‘小新‘,age:5},{ id:‘002‘,name:‘小葵‘]这样数据如何遍历,拿到其中一个值,数组中装对象如何获取其中一个固定的值
let array = [{id:‘001‘,name:‘小新‘,age:5},{ id:‘002‘,name:‘小葵‘]这样数据如何遍历,拿到其中一个值,数组中装对象如何获取其中一个固定的值
|
5月前
|
索引
ArrayList集合常用方法,.set可以用来生成图片和赋值命名,array.remove(1),array.set(1,“xxxx”)可以修改指定位置,array.size可以获取元素的个数
ArrayList集合常用方法,.set可以用来生成图片和赋值命名,array.remove(1),array.set(1,“xxxx”)可以修改指定位置,array.size可以获取元素的个数
|
7月前
|
Python
创建数组(2)
【5月更文挑战第6天】创建数组(2)。
36 2
|
7月前
|
Python
创建数组
【5月更文挑战第6天】创建数组。
43 1
|
7月前
|
Python
使用arange()函数创建数组
使用arange()函数创建数组。
115 1
使用范围函数来创建数组
在 Julia 中,可以使用省略号 `...` 或 `collect()` 函数创建数组。示例:`[0:10...]` 产生一个从 0 到 10 的整数向量。`collect(start:step:stop)` 允许自定义开始、步长和结束值,如 `collect(1:2:13)` 生成一个奇数向量。此外,`collect(element_type, range)` 可指定数组类型,如 `collect(Float64, 1:2:5)` 创建浮点型数组。
【TS】关于v-for数组对象遍历以及在页面上使用提示object类型的问题解决
【TS】关于v-for数组对象遍历以及在页面上使用提示object类型的问题解决
185 0
|
JSON C# 数据格式
数组比较的几种方式
1、string.Equals() ```csharp string[] strList1= new string[3] {"1", "2", "3"}; string[] strList2= new string[3] {"4", "5", "6"}; if (!string.Equals(strList1, strList2)) { // 比较数组的不同之处 } // 涉及到修改日志输出等数组可以直接json序列化然后用上述方法比较即可,如下 if (!string.Equals(JsonConvert.SerializeObject(list1), JsonConvert
81 0
|
网络架构 索引
ES6新增扩展:字符串-数值-数组-函数-对象
ES6新增扩展:字符串-数值-数组-函数-对象
90 0