C++的fill函数和memset函数

来源:互联网 发布:淘宝卖家返利网 编辑:程序博客网 时间:2024/06/10 09:54

我不生产自己不熟悉的内容,我只是陌生内容的搬运工!向原作致敬!

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.          
  15.        system("pause");  
  16.        return 0;  
  17. }  

 
运行结果如下:

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;

注意:<< 优先级低于+。


0 0