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