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

📅  最后修改于: 2021-05-30 19:26:31             🧑  作者: 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等的更多准备工作,请参阅“完整面试准备课程”