• 一维,二维,三维数组,vector 初始化


    1. 用memset初始化数组:

    1)按照字节赋值

    2)头文件在<cstring>中

    注:由于memset函数是按照字节赋值的,所以对int型数组用该函数时,只能是0或-1,否则会出错,这里,不管数组是多少维的,语法均为:

        int dp[84][84][84][2];
        memset(dp, 0, sizeof(dp)); //只能赋值0或-1

    2.  fill 初始化vector和数组:

    1)按照变量类型单元赋值,将区间 [first, end) 中的每个单元都赋为同一个值。

    2)头文件在<algorithm>中

    // fill algorithm example
    #include <iostream>     // std::cout
    #include <algorithm>    // std::fill
    #include <vector>       // std::vector
     
    int main () {
      std::vector<int> myvector (8);                       // myvector: 0 0 0 0 0 0 0 0
     
      std::fill (myvector.begin(),myvector.begin()+4,5);   // myvector: 5 5 5 5 0 0 0 0
      std::fill (myvector.begin()+3,myvector.end()-2,8);   // myvector: 5 5 5 8 8 8 0 0
     
      std::cout << "myvector contains:";
      for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
        std::cout << ' ' << *it;
      std::cout << '
    ';
     
      return 0;
    }

    直接给一维数组赋值:

     int a[4] = {1, 1, 1, 1};
        fill(a, a+2, 284);
        // 284 284 1 1

    要给多维数组赋值时,这里的区间[first, end)都是指针地址,并且是一维的,由于多维数组在内存空间中连续性,可将(int ****)的变量类型dp转化为(int *)类型,得到了dp的首地址,然后按照其区间给其赋值。

    参看如下赋值方法:

        int dp[84][84][84][2];
        fill((int*)dp, (int*)dp + 84 * 84 * 84 * 2, 0);

    也可以这样将二维数组赋值:

        int dp[84][84];
        fill(dp[0], dp[0] + 84 * 84 , 0);

    3. vector 初始化:

    1) 在定义v2时初始化:以下两种方式等价 ,v2 初始化为 v1 的拷贝,两者的必须类型相同,也就是同为int的vector类型,v2将具有和v1相同的容量和元素。

    vector<int> v2(v1);
    vector<int> v2  = v1; 

    2)将v1的某段复制给v2:

    vector<int> v2(v1.begin()+2,v1.end());
    int a[5] = {1,2,3,4,5};
    //通过数组a的地址初始化,注意地址是从0到5(左闭右开区间)
    vector<int> b(a, a+5);

    3) 指定值初始化,ilist5被初始化为包含7个值为3的int

    vector<int> ilist5(7,3);

    4) 初始化二维vector为n行m列,值为0:

    vector<vector<int>> v(n, vector<int>(m, 0));
     
  • 相关阅读:
    智能指针和二叉树(2):资源的自动管理
    c++智能指针和二叉树(1): 图解层序遍历和逐层打印二叉树
    QLineEdit拾遗:数据的过滤、验证和补全
    为Qt视图中的文字添加彩虹渐变效果
    python3的变量作用域规则和nonlocal关键字
    三种方法为QLineEdit添加清除内容按钮
    配置CLion作为Qt5开发环境
    c++随机排序容器中的元素
    c++性能测试工具:google benchmark入门(一)
    shared_ptr和动态数组
  • 原文地址:https://www.cnblogs.com/Bella2017/p/11331337.html
Copyright © 2020-2023  润新知