1. 程式人生 > >c++ fill函式,fill與memset函式的區別

c++ fill函式,fill與memset函式的區別

【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;
}