1. 程式人生 > >C++的fill函式和memset函式

C++的fill函式和memset函式

我不生產自己不熟悉的內容,我只是陌生內容的搬運工!向原作致敬

fill 的標頭檔案是<iostream> 名稱空間是std;
示範程式碼:

Cpp程式碼  收藏程式碼
  1. #include<iostream>  
  2. using namespace std;  
  3. int main()  
  4. {  
  5.        char s[100];  
  6.        fill(s,s+100,'a');  
  7.        for(int i=0;i<100;i++)  
  8.           cout<<s[i];  
  9.        cout<<endl;  
  10.        system("pause"
    );  
  11.        return 0;  
  12. }  

 

它的原理是把那一塊單元賦成指定的值,與memset不同,
memset是按位元組填充的例如:
這個例子可以很好的區別memset和fill:

Cpp程式碼  收藏程式碼
  1. #include<iostream>  
  2. using namespace std;  
  3. int main()  
  4. {  
  5.        int  d[100];  
  6.        fill(d,d+100,1);  
  7.        for(int i=0;i<100;i++)  
  8.           cout<<d[i]<<" ";  
  9.        cout<<endl;  
  10.        memset(d,1,100*sizeof(int));  
  11.        for(int i=0;i<100;i++)  
  12.        cout<<d[i]<<" ";  
  13.        cout<<endl;  
  14.        system("pause");  
  15.        return 0;  
  16. }  

 
執行結果如下:

Cpp程式碼  收藏程式碼
  1. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   
  2. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   
  3. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  4. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  5. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  6. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  7. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  8. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  9. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  10. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  11. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  12. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  13. 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009   
  14. 16843009   

所以不難看出memset int 單元為1 時相當於
(1<<24)+(1<<16)+(1<<8)+1  =  16843009;

注意:<< 優先順序低於+。