(原創) 如何使用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
4
Filename : boostArraySize.cpp
5
Compiler : Visual C++ 8.0 / ISO C++ (boost)
6
Description : Demo how to use boost array pass to function
7
Release : 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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

執行結果



18行

我們看到ia自帶size()
25行

也沒有傳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++)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步