Array ist eine Datenstruktur, die speziell dafür entwickelt wurde, den gleichen Datentyp in einer Reihe von Speicherbereichen zu speichern. Der Hauptvorteil der Verwendung von Arrays besteht darin, dass wir über Indexparameter von jeder Position aus auf sie zugreifen können. Das Einfügen und Löschen von Daten erfordert jedoch sequentielle Vorgänge, wodurch diese Datenstruktur zu einer linearen Datenstruktur wird. Wir können einfach den Index oder die Positionsnummer in eckigen Klammern verwenden, um Elemente aus dem Array zu extrahieren. In diesem Artikel wird gezeigt, wie man in C++ die nächstgelegenen k-Zahlen aus einem Array liest.
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
Wir haben die Elemente innerhalb des Arrays für jedes Array, und die Zahl n gibt an, wie viele gültige Elemente in einem Array vorhanden sind. Die Größe des Arrays kann jedoch nicht mit der Anzahl n übereinstimmen Maximal Z Elemente, davon dürfen nur n gültig sein; in diesem Fall muss k kleiner oder gleich n sein, um das k-te Element aus dem Array abzurufen. Wir müssen es untersuchen. Zum besseren Verständnis werfen wir einen Blick auf den Algorithmus.
Ein Array A als Eingabe lesen. Akzeptiert die Anzahl der Elemente gleichzeitig: n und k, um die ersten k Elemente in A zu lesen
Erstellen Sie ein leeres Array B
Wenn k < n, dann
für i im Bereich 0 bis k - 1, tun
B[ i ] = A[ n - k + i ]
Ende für
Ende wenn
Zurück nach 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,
In der obigen Methode wird ein statisches Array zum Speichern und Abrufen von Array-Elementen verwendet. Die gleiche Funktionalität kann auch mit Vektoren erreicht werden. Vektoren sind Teil der C++-STL und dynamische Arrays. Werfen wir einen Blick auf den Code. Der Algorithmus bleibt unverändert.
#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,
Die letzte Möglichkeit besteht darin, manuell einen leeren Vektor zu erstellen und die Elemente einzeln zu kopieren. Wir können jedoch direkt einen Vektoriterator verwenden, um die letzten k Elemente im Vektorkonstruktor zu kopieren. Schauen wir uns den Code an, um dieses Konzept zu verstehen.
#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,
Hier wird der B-Vektor aus den letzten k Elementen des A-Vektors erstellt. Verwenden Sie die Methode begin() , um die Adresse des ersten Elements zu erhalten, und verwenden Sie den Offset begin() (A.size() − k) als Endpunkt, sodass er auf die letzten k Elemente zeigt.
In diesem Artikel werden drei verschiedene Möglichkeiten erläutert, die letzten n Zahlen aus einem bestimmten Array zu lesen oder auszuwählen. Die zweite und dritte Lösung basieren auf Vektoren anstelle des statischen Standardarrays, das beim ersten Ansatz verwendet wird. Die Antworten auf die ersten beiden Fragen sind einfach. Wir verwenden eine for-Schleife, um die letzten k Elemente einzeln zu kopieren. Die letzte Technik ist die einfachste und verwendet einen Vektorkonstruktor, um einen Vektor zu generieren, indem die Komponenten mithilfe eines Iterators eines anderen Vektors kopiert werden.
Das obige ist der detaillierte Inhalt vonC++-Programm zum Abrufen der letzten angegebenen Anzahl von Elementen in einem Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!