zoukankan      html  css  js  c++  java
  • #include <array>

    array是静态数组,在栈上,不可以变长

    vector比array更常用

    不需要变长,容量较小,用array

    需要变长,容量较大,用vector

    1 array

     

    1 array新数组

    //std::array<数组元素类型, 数组列数> 一维数组变量名

    std::array<double, 4> dbnew1 = { 10.1,10.2,10.3,10.4 };//新数组

    std::array<double, 4> dbnew2 = dbnew1;//新版数组可以实现整体赋值,适合于操作对象数组

     1 #include <iostream>
     2 #include <array>
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     double db[4] = { 1.1,2.2,3.3,4.4 };//旧数组
     8 
     9     //std::array<数组元素类型, 数组元素个数> 一维数组变量名
    10     std::array<double, 4> dbnew1 = { 10.1,10.2,10.3,10.4 };//新数组
    11 
    12     std::array<double, 4> dbnew2 = dbnew1;//新版数组可以实现整体赋值,适合于操作对象数组
    13 
    14     for (int i = 0; i < 4; i++)//打印
    15     {
    16         std::cout << db[i] << " ";
    17     }
    18     std::cout << std::endl;
    19 
    20     for (int i = 0; i < 4; i++)//打印
    21     {
    22         std::cout << dbnew1[i] << " ";
    23     }
    24     std::cout << std::endl;
    25 
    26     for (int i = 0; i < 4; i++)//打印
    27     {
    28         std::cout << dbnew2[i] << " ";
    29     }
    30 
    31     system("pause");
    32 }

    使用C++风格数组不需要管理内存

    array注意不要栈溢出

    array适用于任何类型

    array二维数组,三维数组

    //std::array<数组元素类型, 数组列数> 一维数组变量名

    //std::array<std::array<数组元素类型, 数组行数>, 数组列数> 二维数组变量名

     1 #include <iostream>
     2 #include <array>
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     //std::array<数组元素类型, 数组列数> 一维数组变量名
     8     std::array<int, 5>myint1 = { 1,2,3,4,5 };//一维数组
     9     std::array<int, 5>myint2 = { 11,12,13,14,15 };//一维数组
    10     std::array<int, 5>myint3 = { 21,22,23,24,25 };//一维数组
    11 
    12     //std::array<std::array<数组元素类型, 数组行数>, 数组列数> 二维数组变量名
    13     std::array<std::array<int, 5>, 3>myint = { myint1,myint2,myint3 };//内嵌数组,二维数组
    14     std::array<std::array<int, 5>, 3>myinta = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };//二维数组
    15 
    16     std::array<std::array<std::array<int, 5>, 3>, 4>myintb = { 0 };//三维数组
    17 
    18     for (int i = 0; i < 3; i++)//打印二维数组打印
    19     {
    20         for (int j = 0; j < 5; j++)
    21         {
    22             std::cout << " " << myint[i][j];
    23         }
    24         std::cout << std::endl;
    25     }
    26     std::cout << std::endl;
    27 
    28     for (int i = 0; i < 3; i++)//打印二维数组打印
    29     {
    30         for (int j = 0; j < 5; j++)
    31         {
    32             std::cout << " " << myinta[i][j];
    33         }
    34         std::cout << std::endl;
    35     }
    36     std::cout << std::endl;
    37 
    38     for (int i = 0; i < 4; i++)//打印三维数组
    39     {
    40         for (int j = 0; j < 3; j++)
    41         {
    42             for (int k = 0; k < 5; k++)
    43             {
    44                 std::cout << " " << myintb[i][j][k];
    45             }
    46             std::cout << std::endl;
    47         }
    48         std::cout << std::endl;
    49     }
    50 
    51     system("pause");
    52 }

    迭代器循环遍历数组

    从头到尾iterator

    从尾到头reverse_iterator

     1 #include <iostream>
     2 #include <array>
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     array<int, 5> myint = { 1,2,3,4,5 };
     8 
     9     array<int, 5>::iterator ibegin, iend;//迭代器
    10     ibegin = myint.begin();//数据起始点
    11     iend = myint.end();//结束
    12 
    13     for (; ibegin != iend; ibegin++)//从头到尾
    14     {
    15         cout << *ibegin << endl;
    16     }
    17 
    18     array<int, 5>::reverse_iterator rbegin, rend;//迭代器
    19     rbegin = myint.rbegin();//数据起始点
    20     rend = myint.rend();//结束
    21 
    22     while (rbegin != rend)//从尾到头
    23     {
    24         cout << *rbegin << endl;
    25         rbegin++;
    26     }
    27 
    28     system("pause");
    29 }

    //当构造函数带有参数的情况下,如果要建立类的数组,这时候必须要用C++风格数组

     1 #include <iostream>
     2 #include <array>
     3 
     4 class classobj
     5 {
     6 public:
     7     int num;
     8     explicit classobj(int data)//构造函数需要参数
     9     {
    10         this->num = data;
    11         std::cout << "被构造" << num << std::endl;
    12     }
    13     ~classobj()
    14     {
    15         std::cout << "被销毁" << num << std::endl;
    16     }
    17 };
    18 
    19 void run()
    20 {
    21     classobj obj(0);//创建对象必须有合适的构造函数
    22 
    23     classobj *p = new classobj(5);//创建指针
    24 
    25     std::array <classobj, 2>myarray = { obj,*p };//当构造函数带有参数的情况下,如果要建立类的数组,这时候必须要用C++风格数组
    26 }
    27 
    28 void main()
    29 {
    30     run();
    31 
    32     system("pause");
    33 }
  • 相关阅读:
    Python sys.argv用法详解及应用
    Python map() 函数
    Python中enumerate用法详解
    闭包,作用域链,垃圾回收,内存泄露
    jQuery 常用代码集锦
    关于作用域和作用域链最完整的简述
    git 合并commit
    apollo-client
    关于对称加密和解密
    接口校验机制
  • 原文地址:https://www.cnblogs.com/denggelin/p/5615276.html
Copyright © 2011-2022 走看看