C++ — fill函式,fill與memset函式的區別
阿新 • • 發佈:2019-02-08
【C++】fill函式,fill與memset函式的區別
-
memset函式
- 按照位元組填充某字元
- 在標頭檔案
<cstring>
裡面
-
fill函式
- 按照單元賦值,將一個區間的元素都賦同一個值
- 在標頭檔案
<algorithm>
裡面
-
因為memset函式按照位元組填充,所以一般memset只能用來填充char型陣列,(因為只有char型佔一個位元組)如果填充int型陣列,除了0和-1,其他的不能。因為只有00000000 = 0,-1同理,如果我們把每一位都填充“1”,會導致變成填充入“11111111”
-
而fill函式可以賦值任何,而且使用方法特別簡便:
- fill(arr, arr + n, 要填入的內容);
- 例如:
#include <cstdio> #include <algorithm> using namespace std; int main() { int arr[10]; fill(arr, arr + 10, 2); return 0; }
- vector也可以:
#include <algorithm> #include <vector> #include <iostream> using namespace std; int main(){ vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; fill(v.begin(), v.end(), -1); return 0; }
- 而memset的使用方法是:
#include <iostream> #include <cstring> using namespace std; int main(){ int a[20]; memset(a, 0, sizeof a); return 0; }