C++的fill函数和memset函数
2016-01-07 16:46
691 查看
我不生产自己不熟悉的内容,我只是陌生内容的搬运工!向原作致敬!
fill 的头文件是<iostream> 命名空间是std;
示范代码:
Cpp代码
#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:
Cpp代码
#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;
}
运行结果如下:
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 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;
注意:<< 优先级低于+。
fill 的头文件是<iostream> 命名空间是std;
示范代码:
Cpp代码
#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:
Cpp代码
#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;
}
运行结果如下:
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 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;
注意:<< 优先级低于+。
相关文章推荐
- C++ #,##,stdin,stdout,stderr
- Caffe C++API 提取任意一张图片的特征系列一----ImageData
- C和C++中存储区域详解(栈、堆、全局...)
- C语言:从文本文件中读取输入数据
- 【C++】鸡尾酒算法排序
- java调用c++生成的动态和静态库时遇到的问题
- C语言用igraph读取GML文件
- C++ 编写一个选课系统
- 关于使用Notepad++编译C/C++代码时,dos界面会出现中文乱码现象
- C++中线程的简单使用?
- 【C++专题】static_cast, dynamic_cast, const_cast探讨
- c++引用
- vector C++遍历最快方法
- C语言中的typedef跟define的区别
- C语言写的一个简单的计算器
- 在c++中尾递归,普通递归,循环的效率对比
- 【c/c++】Vector入门
- C语言学习之关键字第六讲
- Sicily 1390. Surprising Strings
- C++语言一个最简单的写入文件操作