前面一篇博客講到了在函數的傳參中數組是不能依靠複製傳遞的,而vector是可以複製的,但是由於vector中通常會含有很多元素,爲了避免大量的複製,可以將容器實參以引用的方式避免複製。下面主要講講在實際當中,對數組和容器的傳參的習慣手法。
1.數組傳參
1)使用指針傳參(數組除了不能夠具有直接複製的特性,還有一個特性,就是數組名通常情況下會自動轉化爲指向其第一個元素的指針)
具體形式有
void size_array( int *);
void size_array( int array[]);
void size_array( int array[size]);
這三種形式是等價的,形參類型其實都是int *,其中第三種方式比較令人費解,主要是使用了數組長度,但在C++中,編譯器會忽略數組形參的長度,值對類型匹配進行檢測。
2)使用引用傳遞數組
此情況下,數組的長度和類型都會被編譯器檢測。形參的長度和實參的必須完全一致。
注意它的格式是:
int size_array(int (&arr)[10] ) {..................};
int array[10];
int a = size_array(array );
函數size_array中的的長度10一定要和實參的長度一致。
2.容器傳參
容器傳參通常採用傳遞指向要處理元素的迭代器來傳參。
個人覺得在處理數組和容器的傳參問題上,主要還是使用指針或者迭代器比較方便。