C++的fill函式和memset函式
阿新 • • 發佈:2019-02-17
我不生產自己不熟悉的內容,我只是陌生內容的搬運工!向原作致敬!
fill 的標頭檔案是<iostream> 名稱空間是std;
示範程式碼:
- #include<iostream>
- using namespace std;
- int main()
- {
- char s[100];
- fill(s,s+100,'a');
- for(int i=0;i<100;i++)
- cout<<s[i];
- cout<<endl;
-
system("pause"
- return 0;
- }
它的原理是把那一塊單元賦成指定的值,與memset不同,
memset是按位元組填充的例如:
這個例子可以很好的區別memset和fill:
- #include<iostream>
- using namespace std;
- int main()
- {
- int d[100];
- fill(d,d+100,1);
- for(int i=0;i<100;i++)
- cout<<d[i]<<" ";
-
cout<<endl;
- memset(d,1,100*sizeof(int));
- for(int i=0;i<100;i++)
- cout<<d[i]<<" ";
- cout<<endl;
- system("pause");
- return 0;
- }
執行結果如下:
-
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 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
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
- 16843009
所以不難看出memset int 單元為1 時相當於
(1<<24)+(1<<16)+(1<<8)+1 = 16843009;
注意:<< 優先順序低於+。