1. 程式人生 > 其它 >fill()、fill_n()與memset()函式的區別

fill()、fill_n()與memset()函式的區別

  • fill  

    在標頭檔案<algorithm>裡。

    按照陣列的始末位置以一個數組元素為單位賦值,將區間內的每一個元素都賦值為val

     程式碼:fill(vector.begin(), vector.end(), val);

  • fill_n()  

    在標頭檔案<algorithm>裡。

    從當前起始點開始,將之後的cnt個元素賦值為val

    注意:不能在沒有元素的空容器上呼叫fill_n()函式

  • 程式碼:fill(vector.begin(), cnt, val);
  • memset()  

    在標頭檔案<cstring>裡。

    將已開闢的記憶體空間arr的前cnt

    個位元組的值設為值val

  • 程式碼 : memset(a,inf,sizeof(a)); //a為陣列首地址;也可是陣列任意一位地址eg:a+3
  • 可複製 0, -1 ,inf(最大值) // const int inf=0x3f3f3f3f
#include<iostream>
#include<queue>
#include<cstring>
#include<vector>
using namespace std;
const int inf=0x3f3f3f3f;
int main()
{
    int a[10]={0};
    memset(a
+3,-1,sizeof(a)); for(int i=0;i<10;i++) printf("%d ",a[i]); return 0; }