数组的选择--固定大小数组模板array存在的意义!
2012-04-02 12:37 Rollen Holt 阅读(1473) 评论(0) 编辑 收藏 举报主要就是为了使用的方便,更加容易和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.当大小需要变动的时候建议使用其它标准容器!
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================