Computer >> Máy Tính >  >> Lập trình >> C ++

Thao tác kiểu mảng trong C ++

Mảng là một cấu trúc dữ liệu trong c ++ lưu trữ nhiều phần tử dữ liệu của cùng một kiểu dữ liệu trong các vị trí bộ nhớ liên tục.

Trong ngôn ngữ lập trình c ++, có sẵn các hàm để thao tác với các kiểu mảng. Một số hàm cũng có thể được áp dụng cho mảng nhiều chiều. Tệp tiêu đề mảng chứa các hàm để thao tác với mảng trong ngôn ngữ lập trình c ++.

Một số phương pháp phổ biến để thao tác với mảng trong c ++ là -

is_array ()

Hàm này được sử dụng để kiểm tra xem biến được truyền vào hàm có thuộc kiểu mảng hay không. Phương pháp này nghiêm ngặt trong việc nhận dạng các mảng mà ngay cả std ::mảng cũng bị từ chối trong quá trình kiểm tra. Kiểu trả về là một số nguyên, tức là nó trả về true (1) nếu một mảng được truyền ngược lại là False (0).

Ví dụ

#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;
}

Đầu ra

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 ()

Hàm này được sử dụng để kiểm tra xem hai loại được thông qua có bản thiết kế chính xác giống nhau hay không, tức là các loại của cả hai phải giống nhau. Hãy xem ví dụ này sẽ rõ ràng hơn về khái niệm -

Ví dụ

#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;
}

Đầu ra

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 ()

Hàm rank được sử dụng để trả về thứ hạng của mảng được truyền vào. Xếp hạng nghĩa là thứ nguyên của mảng. Nó trả về một giá trị nguyên của thứ hạng của mảng.

Ví dụ

#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;
}

Đầu ra

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

scope ()

Phương thức scope () trong c ++ trả về kích thước của một chiều của một mảng. Có hai tham số đầu vào cho phương thức này, mảng và thứ nguyên.

Ví dụ

#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;
}

Đầu ra

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 ()

Hàm remove_extent được sử dụng để xóa thứ nguyên của mảng nhiều chiều. Nó xóa thứ nguyên đầu tiên của mảng.

Ví dụ

#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;
}

Đầu ra

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 ()

Hàm này được sử dụng để loại bỏ tất cả các kích thước của mảng trong một lần. Mảng được thay đổi thành một biến giống như của mảng.

Ví dụ

#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;
}

Đầu ra

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