精华内容
下载资源
问答
  • C++数组初始化

    2020-06-15 17:53:48
    C++数组初始化

    //二维vector初始化
    vector< vector > vt;//初始化一个 二维vector
    vector<vector > vect(vt);//使用另一个 二维 vector 初始化当前二维vector
    vector< vector > vec(row,vector(column));//初始化一个 二维的vector 行row,列column,且值为0
    vector<vector > visited(row,vector(column,6));//初始化一个 二维vector 行row,列column ,且 值为data=6 自定义data;
    vector<vector > vecto(row,vector(vt[0].begin()+1,vt[0].begin()+3));初始化一个 二维vector 行row,第二个参数为一维vector;
    vector<vector> vect(n);
    for(int i = 0 ; i < n; i++) {
    vect[i].resize(m);
    }

    展开全文
  • c++数组初始化

    2021-04-27 10:47:52
    c++数组初始化写法 1.buf[size] = {0}; char buf[4] = {0}; 上述代码执行以后,整个buf都初始化为0,跟我们大部分人的预想是一样。 2.buf[size] = {value}; // value != 0 char buf[4] = {1}; 上述代码执行...

    c++数组初始化写法

    1.buf[size] = {0}; 

    char buf[4] = {0};

    上述代码执行以后,整个buf都初始化为0,跟我们大部分人的预想是一样。

    2.buf[size] = {value};  // value != 0

    char buf[4] = {1};

    上述代码执行以后, buf里的值是[0x1, 0x0, 0x0, 0x0]。  可能很多人会认为整个数组都会初始化成0x1,但是实际上不是的。

    3. 那么我们要把buf初始化成全是0x1, 该怎么写。

    char buf[4] = {0x1, 0x1, 0x1, 0x1};

    或者

    char buf[4];
    memset(buf, 0x1, sizeof(buf));

    为什么 = {0}可以初始化成功, 而 = {1}只能初始化第一个char?

    情况1:初始化数组时,给所有元素都附上值,这是一个好习惯,代码无歧义。 缺点就是数组很长时, 代码冗余难写。

    情况2:初始化数组时,只有前面若干元素有指定赋值, 如果省略没赋值的,按照默认构造函数来构造元素。这是 = {0}符合预期, 而={1}不符合的原因,因为char默认构造为0了,而且这个看编译器,你很难明确编译器是否默认构造为0。因此强烈建议不要使用这种方式来初始化。


    总结:

    代码要正确,也要明确。所有带有歧义的用法我们都要避免。

    因此数组的初始化建议都用memset函数来实现。

    如果不是char数组,而是int数组的话,可以通过for循环来初始化。

     

    展开全文
  • c++ 数组初始化

    千次阅读 2018-07-27 13:21:12
    这种方式初始化,大括号里写了几个元素那么数组里就有几个元素,相当于int a[3]={1,2,3} int a[3]={0}; 这样是将a中的所有元素初始化为0; int a[4]={1,2}; 这样是将a[0]初始化为1,a[1]初始化为2,其他的初始化为0...

    int a[]={1,2,3}; 这种方式初始化,大括号里写了几个元素那么数组里就有几个元素,相当于int a[3]={1,2,3}

    int a[3]={0}; 这样是将a中的所有元素初始化为0;
    int a[4]={1,2}; 这样是将a[0]初始化为1,a[1]初始化为2,其他的初始化为0

    展开全文
  • C++ 数组初始化与指针

    2019-06-07 00:25:00
    参考链接:C/C++数组初始化的一些误区 1. 很容易出现的误区: int a[5] = { 0 }; // 全部初始化为0int a[5] = { 1 }; // 我想全部初始化为1 上面初始化 1 的作法将会产生错误,而且你很可能想当然这么以为...

    数组初始化

    参考链接:C/C++数组初始化的一些误区

    1. 很容易出现的误区:

    int a[5] = { 0 };    // 全部初始化为0
    int
    a[5] = { 1 }; // 我想全部初始化为1

    上面初始化 1 的作法将会产生错误,而且你很可能想当然这么以为,从而导致耗费时间。如果真正理解数据初始化的原则,就不会犯错了。数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值。

     对于基本类型int来说,当然就是补int()即0了。再看一下非基本类型的数组:

      

    string a[5] = { "foo" };

     等价于

    string a[5] = { "foo", "", "", "", "" };

    即后面4个元素调用了string的默认构造函数进行的初始化,而第一个则调用的string::string(const char*)进行的初始化。

     

    2. memset 的误区

    注意:memset的使用有个大问题,就是它只对char类型的数组管用,因为memset的内部实现是以字节为单位进行赋值的,如果对int 类型(4个字节),数组内存连续,结果会如下

    // 成功
    char a[10];
    memset(a, 1, 10);    // 将每个元素设置为1
    
    // 异常值
    int a[10];
    int a[10];
    memset(a, 1, 10*sizeof(int));
    for(int i = 0; i < 10; i++)
      cout << a[i]  << endl;    // 都被赋值为16843009,十六进制表示为0x01010101

    指针和数组

    参考链接:

    C++中数组定义及初始化

    6.14 — Pointers to pointers and dynamic multidimensional arrays

    1. 一维数组

    1. 静态 int array[100];   定义了数组array,并未对数组进行初始化
    2. 静态 int array[100] = {1,2};  定义并初始化了数组array
    3. 动态 int* array = new int[100];  delete []array;  分配了长度为100的数组array 
    4. 动态 int* array = new int[100]{1,2};  delete []array; 为长度为100的数组array初始化前两个元素

    2. 二维数组

    1. 静态 int array[10][10];  定义了数组,并未初始化
    2. 静态 int array[10][10] = { {1,1} , {2,2} };  数组初始化了array[0][0,1]及array[1][0,1]
    3. 动态 int (*array)[n] = new int[m][n]; delete []array;  // in c++11: auto array = new int[m][n]
    4. 动态 int** array = new int*[m]; for(i) array[i] = new int[n];  for(i) delete []array[i]; delete []array;    多次析构
    5. 动态 int* array = new int[m*n];  delete []array;      数组按行存储
    6. 注意这种方式不可用: int **array = new int[m][n];

    转载于:https://www.cnblogs.com/zwk-coder/articles/10987389.html

    展开全文
  • C++数组初始化memset和fill 目录 前言 一、静态初始化 二、动态初始化 总结 前言 C++中数组的初始化 一、静态初始化 int main() { // 静态数组arr int arr[10]; // 将数组所有元素初始化为0 /...
  • 【转】c++数组初始化

    2019-09-29 22:53:26
    原文:C/C++数组初始化的一些误区 以前我这样初始化一个数组,并自我感觉良好: int a[5] = { 0 }; // 全部初始化为0 这种简单的写法让我非常爽,于是我又想把数组全部初始化为1: int a[5] = { 1 }...
  • C/C++数组初始化的总结

    万次阅读 多人点赞 2018-12-11 16:19:15
    数组初始化的几种形式 数组初始化为某一固定值 memset(数组名,值,sizeof(数组名)) fill(begin(),end(),value) 以前刚开始学数组初始化,一直都没搞太清楚,包括参加PAT考试,直到看了胡凡的《算法笔记》,逐渐...
  • 关于C++数组初始化的一些坑之原理剖析 前情提要 在开始之前先介绍几种数组初始化的语法: 将数组初始化为0,有以下几种常用方案 1. int arr[10]{0}; 2. int* arr = new int[10]{0};//分配到堆内存 3. int arr[10] = ...
  • 参考资料: C/C++数组初始化 2、for循环初始化: int arr[26] = {1}; for(int i = 0; i<26;i++){ // 全部初始化为-1 arr[i] = -1; } 3、memset初始化: int arr[26] = {-1}; memset(arr, -1, sizeof(arr))
  • 【C++】C++数组初始化方法

    万次阅读 2018-12-17 22:13:55
    定义: int *pia = new int[10];...此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。 在自由存储区中创建的数组对...
  • c++数组初始化总结

    2020-02-14 11:29:10
    静态数组: //一维数组 int a[10];...//定义了长度为10的数组,前两个位置初始化值为1,2,其余位置初始化值为0 //二维数组 int a[10][9];//定义了10×9的数组,并未对值进行初始化 int a[10][9]=...
  • C/C++数组初始化

    2020-09-06 13:07:44
    1、整型数组初始化-栈初始化 //默认初始化 int a[5] = {}; //[0, 0, 0, 0, 0] //全部初始化为0 int a[5] = {0}; //[0, 0, 0, 0, 0] //c++11新写法 int a[5]{}; //[0, 0, 0, 0, 0] 2、字符串的初始化-栈初始化 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,026
精华内容 2,410
关键字:

c++数组初始化

c++ 订阅