数组初始化方法总结
1、循环法
//一维数组循环初始化
for(int i=0;i<=N;i++)
a[i]=1;
//二维数组循环初始化
for(int i=0;i<=N;i++)
for(int j=0;j<=N;j++)
a[i][j]=1;
总结:
就是一顿无脑的循环,一维就一层,二维就二层,三维就三层,无脑,太无脑,浪费手指头。
2、memset法
局限性很强,但网友们大量使用,事实标准。
按照字节填充某字符。因为memset函数按照字节填充,所以一般memset只能用来填充char
型数组,(因为只有char型占一个字节)如果填充int
型数组,除了0
和-1
,其他的不能。因为只有00000000 = 0
,-1
同理,如果我们把每一位都填充"1",会导致变成填充入11111111
。
memset
的使用方法是:
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int a[20];
memset(a, 0, sizeof a);
return 0;
}
3、fill法
fill
函数可以赋值任何,而且使用方法特别简便:
例如int数组:fill(arr, arr + n, 要填入的内容);
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int arr[10];
fill(arr, arr + 10, 2);
return 0;
}
vector
也可以:fill(v.begin(), v.end(), 要填入的内容);
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
fill(v.begin(), v.end(), -1);
return 0;
}
fill
填充二维(多维也是一样)的方法:
fill(a[0],a[0]+m*n,1)
参数的类型和上面的一样,这里唯一值得注意的是第一个起始地址,
(1) 二维数组,它的第一个数值的表达是 a[0][0]
,而它的地址就可以用a[0]
来表示。
(2) 三维数组,它的第一个数值的表达是 a[0][0][0]
,而它的地址就可以用a[0][0]
来表示。
//二维数组初始化为1
fill(a[0], a[0] + N * N , 1);
//三维数组初始化为1
fill(a[0][0], a[0][0] + N * N * N, 1);
4、总结
memset
主要对数组进行赋值,且对int
型数组,只能赋值为0
和-1
。
fill
函数可以对数组或其他容器,进行赋值,值可以任意。
fill
和memset
都作用于int
型数组上时,fill方法速度较慢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2017-07-04 360开源的pika