c++的列表初始化問題
阿新 • • 發佈:2018-12-10
要初始化一個整型陣列為0的時候, 我們通常可以這樣寫
int num[100] {0};
但是初始化這個整型陣列為其他值的時候, 是否能這樣寫呢?
int num[100] {1};
printf
列印下結果會發現是不可行的, 只有num[0]
被初始化為1, 其他元素均為0.
那麼 為什麼寫0
的時候就是對的呢?
原因是因為對於列表初始化而言, 當列表中的元素少於陣列元素的時候, 編譯器會將後面的元素全部填為0, 所以初始化為0其實就是將陣列的第一個元素初始化後, 利用編譯器的這個功能將剩餘的元素都初始化為0.
那麼要初始化為其他值的時候, 應該怎麼做?
- 使用memset函式: memset函式是string.h中的一個函式, 其寫法是
memset(point_of_begin, value, size_of_item_to_fill);
- 使用fill函式, fill函式是algorithm中的一個函式, 其寫法是
#include<algorihtm>
fill(begin_point, end_point, value);
注意到, begin和end的區間是左閉右開, 同時, 這兩個值對於陣列來說是指標, 對於容器來說是迭代器, fill方法可以填充大多數資料型別,包括自定義的資料型別.