c++ fill函式,fill與memset函式的區別
阿新 • • 發佈:2019-01-28
【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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 而memset的使用方法是:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int a[20];
memset(a, 0, sizeof a);
return 0;
}