关于初始化int数组
关于C++初始化int数组
在做题⽬时,我发现经常使⽤的memset()在把int数组初始化为1时失去了作⽤:
memset()只能将数组初始化为-1或0
memset()函数初始化出现问题的原因
memset()本来是⽤来初始化char型数组的,所以我们可以想到memset()函数是⼀个个字节对数组进⾏初始化的。然⽽,int型的数据占4个字节。memset()之所以可以把int型数组初始化-1或0,就是因为他们是特殊情况,他们的⼆进制补码分别表⽰为全为1和全为0,这才导致可以初始化int数组的原因,可如果我想初始化为1怎么办呢。
⽤C++函数初始化数组
⽤fill()函数初始化数组
fill()函数的头⽂件是#include <algotithm>,下⾯是代码块:
#include <cstdio>
#include <algorithm>
定义数组初始化using namespace std;
int main() {
int arr[1000];
fill(arr, arr+1000, 1);
return0;
}
⽤fill_n()函数初始化数组
fill_n()函数的头⽂件同样是#include<algorithm>,下⾯是代码块:
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int arr[1000];
fill_n(arr, 1000, 1);
return0;
}
⼩⽅法:只是如果每次不想记住⾃⼰的数组开了多⼤的话,⽤int s = sizeof(arr)/sizeof(int); 就好。只不过这样要记住类型。
这个⽅法可以扩展到其它类型的数组。
初始化⼆维数组
⽤arr[SIZE][SIZE]作为例⼦。
fill(arr[0], arr[0]+SIZE*SIZE, INF);
INF为你要填⼊的数字。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论