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

  • 相关阅读:
    SPOJ 1812 Longest Common Substring II(后缀自动机)(LCS2)
    HDU 4441 Queue Sequence(优先队列+Treap树)(2012 Asia Tianjin Regional Contest)
    HDU 4433 locker(DP)(2012 Asia Tianjin Regional Contest)
    HDU 4431 Mahjong(枚举+模拟)(2012 Asia Tianjin Regional Contest)
    NavigationBar的简单设置
    Android如何设置标题栏的高度
    android 在标题栏加上按钮
    MediaRecorder类介绍
    Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
    2016/1/7 改 百文百鸡 水仙花数 百马百担
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2429823.html
Copyright © 2011-2022 走看看