(原創) 如何使用boost::array? (C/C++) (template) (boost)

看到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
13using namespace std;
14using namespace boost;
15
16template<size_t N>
17void func(array<int,N> ia) {
18  for(int i = 0; i != ia.size(); ++i) {
19    cout << ia[i] << endl;
20  }

21}

22
23int main() {
24  array<int3> ia = {0 , 12};
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進去。

Conclusion
C/C++傳統須另外將array size當參數傳進function的缺點,現在有兩種方式解決,一種是使用function template,請參閱(原創) 如何使用function template傳遞array?(C/C++) (template),一種就是本文所使用的boost:array。

See Also
(原創) array傳進function該怎麼寫才好? (C/C++)
(原創) 如何使用function template傳遞array? (C/C++)

posted on 2007-02-25 18:34  真 OO无双  阅读(1762)  评论(0编辑  收藏  举报

导航