数组初始化方法总结

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函数可以对数组或其他容器,进行赋值,值可以任意。

fillmemset都作用于int型数组上时,fill方法速度较慢。

原文链接: https://www.cnblogs.com/littlehb/p/14968308.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    数组初始化方法总结

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/211897

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午1:00
下一篇 2023年2月13日 上午1:03

相关推荐