📜  C++中的数组类型操作

📅  最后修改于: 2021-05-26 00:49:11             🧑  作者: Mango

本文演示了一些内置函数,这些函数可用于查询和操作数组类型,甚至是多维数组。在我们需要信息或操纵以不同维度启动的数组的情况下,这些功能很有用。这些函数在头文件中定义。其中一些功能包括:

  1. is_array():顾名思义,此函数的唯一目的是检查变量是否为数组类型。在此值得注意的是,根据此函数,即使std :: array也不会被视为数组。如果类型为数组,则“值”成员常量将返回true,否则返回false。
  2. is_same():此函数用于检查类型关系,如果两个类型具有完全相同的特征,则返回true。如果类型相同,则“值”成员常量将返回true,否则返回false。
    // C++ code to demonstrate the working of 
    // is_array() and is_same()
      
    #include
    #include
    #include
    #include
    using namespace std;
      
    int main()
    {
        // checking which is array using is_array
        cout << "Is Integer an array? : " << is_array::value << endl;
          
        cout << "Is Array an array? : " << is_array::value << endl;
          
        cout << "Is 2D Array an array? : " 
        << is_array::value << endl;
          
        cout << "Is String an array? : " << is_array::value << endl;
          
        cout << "Is Character Array an array? : " 
        << is_array::value << endl;
          
        cout << "Is Array class type an array? : " 
        << is_array>::value << endl;
          
        cout << endl;
          
        // checking for same types using is_same()
        cout << "Is 2D array same as 1D array? : " << 
        is_same::value << endl;
          
        cout << "Is Character array same as Integer array? : " 
        << is_same::value << endl;
          
        cout << "Is 1D array same as 1D array (Different sizes) ? : " 
        << is_same::value << endl;
          
        cout << "Is 1D array same as 1D array? (Same sizes): " 
        << is_same::value << endl;
        return 0;
    }
    

    输出:

    Is Integer an array? : 0
    Is Array an array? : 1
    Is 2D Array an array? : 1
    Is String an array? : 0
    Is Character Array an array? : 1
    Is Array class type an array? : 0
    
    Is 2D array same as 1D array? : 0
    Is Character array same as Integer array? : 0
    Is 1D array same as 1D array (Different sizes) ? : 0
    Is 1D array same as 1D array? (Same sizes): 1
    
  3. rank():这是一个属性查询函数,它返回数组的秩。等级是指数组的维数。值成员常量返回对象的等级。
    // C++ code to demonstrate the working of 
    // rank()
      
    #include // for array query functions
    #include
    using namespace std;
      
    int main()
    {
        // checking rank of different types
        cout << "The rank of integer is : " << rank::value << endl;
          
        cout << "The rank of 1D integer array is : " 
        << rank::value << endl;
          
        cout << "The rank of 2D integer array is : " 
        << rank::value << endl;
          
        cout << "The rank of 3D integer array is : " 
        << rank::value << endl;
          
        cout << "The rank of 1D character array is : " 
        << rank::value << endl;
      
        cout << endl;
          
    }
    

    输出:

    The rank of integer is : 0
    The rank of 1D integer array is : 1
    The rank of 2D integer array is : 2
    The rank of 3D integer array is : 3
    The rank of 1D character array is : 1
    
  4. scope():扩展范围和删除扩展都是化合物类型的更改,可以应用于C++中的数组。此函数返回数组特定维的大小。此函数接受两个参数,即数组类型和必须找到其大小的维。这也具有用于打印值的成员常数值。
  5. remove_extent():此函数从声明的矩阵/数组中从左侧移除第一个维度。
  6. remove_all_extents():此函数删除矩阵/数组的所有维,并将其转换为基础数据类型。
    // C++ code to demonstrate the working of 
    // extent(), remove_extent(), remove_all_extents()
      
    #include // for array query functions
    #include
    using namespace std;
      
    int main()
    {
      
          
        // Checking extent of different types (using extent)
        cout << "The extent of 1st dimension of 3D integer array is : " ;
        cout << extent::value << endl;
          
        cout << "The extent of 2nd dimension of 3D integer array is : " ;
        cout << extent::value << endl;
          
        cout << "The extent of 3rd dimension of 3D integer array is : " ;
        cout << extent::value << endl;
          
        cout << "The extent of 4th dimension of 3D integer array is : " ;
        cout << extent::value << endl;
          
        cout << endl;
          
        // Removing extent of types
        cout << "The rank after removing 1 extent is : " ;
        cout << rank::type>::value << endl;
          
        // 1st dimension from left is deleted
        cout << "The extent of 1st after removing 1 extent is : " ;
        cout << extent::type>::value << endl;
          
        cout << endl;
          
        // Removing all extents of types
        cout << "The rank after removing all extents is : " ;
        cout << rank::type>::value << endl;
          
        // All extents are deleted
        cout << "The extent of 1st after removing all extents is : " ;
        cout << extent::type>::value << endl;
      
        cout << endl;
          
    }
    

    输出:

    The extent of 1st dimension of 3D integer array is  : 20
    The extent of 2nd dimension of 3D integer array is  : 10
    The extent of 3rd dimension of 3D integer array is  : 40
    The extent of 4th dimension of 3D integer array is  : 0
    
    The rank after removing 1 extent is : 2
    The extent of 1st after removing 1 extent is : 10
    
    The rank after removing all extents is : 0
    The extent of 1st after removing all extents is : 0
    
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”