fill和memset对结构体进行初始化和覆盖
fill的头文件:#include<algorithm>
memset的头文件:#include<cstring>或#include<string.h>
memset可以初始化整个结构体,或者结构体中的某个数组,但只能初始化为0或-1
fill只能初始化结构体中的某个数组,不能初始化整个结构体,但可以任意赋值
在结构体定义的同时初始化:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 struct node 6 { 7 int x[10]; 8 int y[10]; 9 node() 10 { 11 //结构体整体初始化为0,fill不行 12 memset(&x,0,sizeof(node)); 13 //或memset(this,0,sizeof(node)); 14 //仅仅y数组被初始化为4 15 fill(y,y+10,4); 16 } 17 }; 18 node a; 19 int main() 20 { 21 for(int i=0;i<10;i++) 22 { 23 cout<<a.x[i]<<" "<<a.y[i]<<endl; 24 } 25 return 0; 26 }
在主函数中的覆盖,同理:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 struct node 6 { 7 int x[10]; 8 int y[10]; 9 }; 10 node a; 11 int main() 12 { 13 //把结构体整体覆盖为-1 14 memset(&a.x,-1,sizeof(a)); 15 for(int i=0;i<10;i++) 16 { 17 cout<<a.x[i]<<" "<<a.y[i]<<endl; 18 } 19 //把y数组覆盖为5 20 fill(a.y,a.y+10,5); 21 //把x数组覆盖为0 22 memset(a.x,0,sizeof(a.x)); 23 for(int i=0;i<10;i++) 24 { 25 cout<<a.x[i]<<" "<<a.y[i]<<endl; 26 } 27 return 0; 28 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律