看到C#的array自帶GetLength()很羨慕嗎?boost::array也自帶size()喔!!
由於boost::array自帶size(),所以當傳進function時,可以不需將array size當參數傳進function。 1 /**/ /* 2(C) OOMusou 2007 http://oomusou.cnblogs.com 3 4Filename : boostArraySize.cpp 5Compiler : Visual C++ 8.0 / ISO C++ (boost) 6Description : Demo how to use boost array pass to function 7Release : 02/25/2007 1.0 8*/ 9 #include < iostream > 10 #include < boost / array.hpp > 11 #include " conio.h " 12 13 using namespace std; 14 using namespace boost; 15 16 template < size_t N > 17 void func(array < int ,N > ia) { 18 for(int i = 0; i != ia.size(); ++i) { 19 cout << ia[i] << endl;20 }21} 22 23 int main() { 24 array<int, 3> ia = { 0 , 1, 2};25 func(ia);26 27 getch();28}
執行結果 0 1 2
18行 for ( int i = 0 ; i != ia.size(); ++ i) {
我們看到ia自帶size()25行 func(ia);
也沒有傳array size進去。ConclusionC/C++傳統須另外將array size當參數傳進function的缺點,現在有兩種方式解決,一種是使用function template,請參閱,一種就是本文所使用的boost:array。See Also