Array ialah struktur data yang direka khas untuk mengekalkan jenis data yang sama dalam satu siri kawasan ingatan. Faedah utama menggunakan tatasusunan ialah kita boleh mengaksesnya dari mana-mana kedudukan menggunakan parameter indeks. Walau bagaimanapun, memasukkan dan memadam data memerlukan operasi berjujukan, yang akan menjadikan struktur data ini sebagai struktur data linear. Kita hanya boleh menggunakan indeks atau nombor kedudukan dalam kurungan segi empat sama untuk mengekstrak elemen daripada tatasusunan. Artikel ini akan menunjukkan cara membaca nombor k terdekat daripada tatasusunan dalam C++.
Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69] We have another number k = 4 The number of elements in A is 9 The output will be the last k elements from A, which are: 12, 35, 74, 69
Kami mempunyai elemen di dalam tatasusunan untuk setiap tatasusunan, dan kuantiti n juga penting Nombor n menunjukkan bilangan elemen yang sah ada dalam tatasusunan maksimum unsur Z, hanya n daripadanya mesti sah; dalam kes ini, k mesti kurang daripada atau sama dengan n untuk mendapatkan semula elemen kth dari tatasusunan. kita mesti menyemaknya. Untuk pemahaman yang lebih baik, mari kita lihat algoritmanya.
Baca tatasusunan A sebagai input. Menerima bilangan elemen secara serentak: n dan k untuk membaca elemen k pertama dalam A
Buat tatasusunan kosong B
Jika k < n, maka
untuk i dalam julat 0 hingga k - 1, lakukan
B[ i ] = A[ n - k + i ]
tamat untuk
tamat jika
Kembali ke B
#include <iostream> # define Z 50 using namespace std; void displayArr(int arr[], int n){ for( int i = 0; i < n; i++ ){ cout << arr[ i ] << ", "; } cout << endl; } void pickLastKElement( int A[], int n, int B[], int &m, int k) { if( k <= n ){ for( int i = 0; i < k; i++ ) { B[ i ] = A[ n - k + i ]; m = m + 1; } } } int main() { int A[ Z ] = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; int n = 12; int B[ Z ]; int m = 0; cout << "Given Array: "; displayArr( A, n ); pickLastKElement( A, n, B, m, 7 ); cout << "The last 7 element from A: "; displayArr( B, m ); m = 0; pickLastKElement( A, n, B, m, 10 ); cout << "The last 10 element from A: "; displayArr( B, m ); }
Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Dalam kaedah di atas, tatasusunan statik digunakan untuk menyimpan dan mendapatkan semula elemen tatasusunan. Fungsi yang sama juga boleh dicapai menggunakan vektor. Vektor adalah sebahagian daripada C++ STL dan merupakan tatasusunan dinamik. Mari kita lihat kodnya. Algoritma kekal tidak berubah.
#include <iostream> #include <vector> # define Z 50 using namespace std; void displayArr( vector<int> v ){ for( int i = 0; i < v.size() ; i++ ){ cout << v[ i ] << ", "; } cout << endl; } vector<int> pickLastKElement( vector<int> A, int k) { vector<int> B; if( k <= A.size() ){ for( int i = 0; i < k; i++ ) { B.push_back( A[ A.size() - k + i ] ); } } return B; } int main() { vector<int> A = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; vector<int> B; cout << "Given Array: "; displayArr( A ); B = pickLastKElement( A, 7 ); cout << "The last 7 element from A: "; displayArr( B ); B = pickLastKElement( A, 10 ); cout << "The last 10 element from A: "; displayArr( B ); }
Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Cara terakhir ialah membuat vektor kosong secara manual dan menyalin elemen satu demi satu. Walau bagaimanapun, kita boleh terus menggunakan iterator vektor untuk menyalin elemen k terakhir dalam pembina vektor. Mari kita lihat kod untuk memahami konsep ini.
#include <iostream> #include <vector> # define Z 50 using namespace std; void displayArr( vector<int> v ){ for( int i = 0; i < v.size() ; i++ ){ cout << v[ i ] << ", "; } cout << endl; } vector<int> pickLastKElement( vector<int> A, int k) { vector<int> B( A.begin() + (A.size() - k), A.end() ); return B; } int main() { vector<int> A = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; vector<int> B; cout << "Given Array: "; displayArr( A ); B = pickLastKElement( A, 7 ); cout << "The last 7 element from A: "; displayArr( B ); B = pickLastKElement( A, 10 ); cout << "The last 10 element from A: "; displayArr( B ); }
Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Di sini, vektor B dicipta menggunakan elemen k terakhir bagi vektor A. Gunakan kaedah begin() untuk mendapatkan alamat item pertama dan gunakan offset begin() (A.size() − k) sebagai titik akhir, supaya ia menghala ke elemen k terakhir.
Artikel ini menerangkan tiga cara berbeza untuk membaca atau memilih n nombor terakhir daripada tatasusunan yang diberikan. Penyelesaian kedua dan ketiga adalah berdasarkan vektor dan bukannya tatasusunan lalai statik yang digunakan oleh pendekatan pertama. Jawapan kepada dua soalan pertama adalah mudah. Kami menggunakan gelung for untuk menyalin elemen k terakhir satu demi satu. Teknik terakhir adalah yang paling mudah dan menggunakan pembina vektor untuk menghasilkan vektor dengan menyalin komponen menggunakan iterator vektor lain.
Atas ialah kandungan terperinci Program C++ untuk mendapatkan bilangan item terakhir yang diberikan dalam tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!