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;
}
---------------------
作者:柳婼
來源:CSDN
原文:https://blog.csdn.net/liuchuo/article/details/52296646?utm_source=copy