Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การจัดการประเภทอาร์เรย์ใน C++


อาร์เรย์ เป็นโครงสร้างข้อมูลใน c++ ที่จัดเก็บองค์ประกอบข้อมูลหลายรายการของประเภทข้อมูลเดียวกันในตำแหน่งหน่วยความจำต่อเนื่อง

ในภาษาโปรแกรม c++ มีฟังก์ชัน inbuilt เพื่อจัดการประเภทอาร์เรย์ ฟังก์ชันบางอย่างยังสามารถนำไปใช้กับอาร์เรย์หลายมิติได้อีกด้วย ไฟล์ส่วนหัวอาร์เรย์มีฟังก์ชันสำหรับจัดการอาร์เรย์ในภาษาการเขียนโปรแกรม c++

วิธีการทั่วไปบางประการในการจัดการอาร์เรย์ใน c++ คือ -

is_array()

ฟังก์ชันนี้ใช้ตรวจสอบว่าตัวแปรที่ส่งผ่านไปยังฟังก์ชันนั้นเป็นประเภทอาร์เรย์หรือไม่ วิธีนี้เข้มงวดในการจดจำอาร์เรย์ที่แม้แต่ std::array ถูกปฏิเสธในการตรวจสอบ ประเภทการส่งคืนเป็นจำนวนเต็ม เช่น ส่งกลับค่าจริง(1) หากอาร์เรย์ถูกส่งเป็นเท็จ (0)

ตัวอย่าง

#include<type_traits>
#include<iostream>
#include<array>
#include<string>
using namespace std;
int main(){
   cout<<"Checking if int is an array ? : ";
   is_array<int>::value?cout<<"True":cout<<"False";
   cout<<"\nChecking if int[] is an array? : ";
   is_array<int[6]>::value?cout<<"True":cout<<"False";
   cout<<"\nChecking if 2D Array is an array? : ";
   is_array<int[2][3]>::value?cout<<"True":cout<<"False";
   cout<<"\nChecking if String is an array? : ";
   is_array<string>::value?cout<<"True":cout<<"False";
   cout<<"\nChecking if Character Array is an array? : ";
   is_array<char[4]>::value?cout<<"True":cout<<"False";
   cout << endl;
   return 0;
}

ผลลัพธ์

Checking if int is an array ? : False
Checking if int[] is an array? : True
Checking if 2D Array is an array? : True
Checking if String is an array? : False
Checking if Character Array is an array? : True

is_same()

ฟังก์ชันนี้ใช้เพื่อตรวจสอบว่าทั้งสองประเภทที่ส่งผ่านมีพิมพ์เขียวเหมือนกันทุกประการหรือไม่ เช่น ประเภทของทั้งสองควรเหมือนกัน มาดูตัวอย่างนี้กัน ซึ่งจะเคลียร์แนวคิด −

ตัวอย่าง

#include<type_traits>
#include<iostream>
#include<array>
#include<string>
using namespace std;
int main(){
   cout << "Checking if 1D array is same as 1D array (Different sizes) ? : " ;
   is_same<int[3],int[4]>::value?cout<<"True":cout<<"False";
   cout << "\nChecking if 1D array is same as 1D array? (Same sizes): " ;
   is_same<int[5],int[5]>::value?cout<<"True":cout<<"False";
   cout << "\nChecking If 2D array is same as 1D array? : ";
   is_same<int[3],int[3][4]>::value?cout<<"True":cout<<"False";
   cout << "\nChecking if Character array is same as Integer array? : " ;
   is_same<int[5],char[5]>::value?cout<<"True":cout<<"False";
   return 0;
}

ผลลัพธ์

Checking if 1D array is same as 1D array (Different sizes) ? : False
Checking if 1D array is same as 1D array? (Same sizes): True
Checking If 2D array is same as 1D array? : False
Checking if Character array is same as Integer array? : False

อันดับ()

ฟังก์ชัน rank ใช้เพื่อส่งคืนอันดับของอาร์เรย์ที่ส่งผ่าน อันดับ หมายถึงมิติของอาร์เรย์ ส่งคืนค่าจำนวนเต็มของลำดับของอาร์เรย์

ตัวอย่าง

#include<type_traits>
#include<iostream>
using namespace std;
int main(){
   cout<<"Print rank for the following types of arrays : \n";
   cout<<"integer : "<<rank<int>::value<<endl;
   cout<<"1D integer array (int[]) : "<< rank<int[5]>::value<<endl;
   cout<<"2D integer array (int[][]) : "<<rank<int[2][2]>::value<<endl;
   cout<<"3D integer array (int[][][]) : "<<rank<int[2][3][4]>::value<<endl;
   cout<<"1D character array : "<<rank<char[10]>::value<<endl;
}

ผลลัพธ์

Print rank for the following types of arrays :
integer : 0
1D integer array (int[]) : 1
2D integer array (int[][]) : 2
3D integer array (int[][][]) : 3
1D character array : 1

ขอบเขต()

ขอบเขต() วิธีการใน c ++ ส่งกลับขนาดของมิติของอาร์เรย์ มีพารามิเตอร์อินพุต 2 ตัวสำหรับเมธอดนี้ อาร์เรย์ และมิติ

ตัวอย่าง

#include<type_traits>
#include<iostream>
using namespace std;
int main(){
   cout<<"Printing the length of all dimensions of the array arr[2][45][5] :\n";
   cout<<"1st dimension : "<<extent<int[2][45][5],0>::value<<endl;
   cout<<"2nd dimension : "<<extent<int[2][45][5],1>::value<<endl;
   cout<<"3rd dimension : "<<extent<int[2][45][5],2>::value<<endl;
   cout<<"4th dimension : "<<extent<int[2][45][5],3>::value<<endl;
}

ผลลัพธ์

Printing the length of all dimensions of the array arr[2][45][5] :
1st dimension : 2
2nd dimension : 45
3rd dimension : 5
4th dimension : 0

remove_extent()

ฟังก์ชัน remove_extent ใช้เพื่อลบมิติของอาร์เรย์หลายมิติ มันจะลบมิติแรกของอาร์เรย์

ตัวอย่าง

#include<type_traits>
#include<iostream>
using namespace std;
int main(){
   cout<<"Removing extent of the array arr[2][5][4] : \n";
   cout<<"Initial rank : "<<rank<int[2][5][4]>::value<<endl;
   cout<<"The rank after removing 1 extent is : " ;
   cout << rank<remove_extent<int[20][10][30]>::type>::value << endl;
   cout << "length of 1st dimension after removal is :";
   cout<<extent<remove_extent<int[20][10][30]>::type>::value << endl;
}

ผลลัพธ์

Removing extent of the array arr[2][5][4] :
Initial rank : 3
The rank after removing 1 extent is : 2
length of 1st dimension after removal is :10

remove_all_extents()

ฟังก์ชันนี้ใช้เพื่อลบมิติข้อมูลทั้งหมดของอาร์เรย์ในครั้งเดียว อาร์เรย์ถูกเปลี่ยนเป็นตัวแปรเหมือนกับอาร์เรย์

ตัวอย่าง

#include<type_traits>
#include<iostream>
using namespace std;
int main(){
   cout<<"Removing all extents of the array arr[2][5][4] : \n";
   cout<<"Initial rank : "<<rank<int[2][5][4]>::value<<endl;
   cout<<"The rank after removing all extents is : " ;
   cout << rank<remove_all_extents<int[20][10][30]>::type>::value << endl;
   cout << "length of 1st dimension after removal is :";
   cout<<extent<remove_all_extents<int[20][10][30]>::type>::value << endl;
}

ผลลัพธ์

Removing all extents of the array arr[2][5][4] :
Initial rank : 3
The rank after removing all extents is : 0
length of 1st dimension after removal is :0