Zugriff auf Member-Funktionen vom Zeiger auf einen Vektor in C++
-
Verwenden der
->
Notation für den Zugriff auf Member-Funktionen von einem Zeiger auf einen Vektor -
Verwendung der
(*)vector.member
-Notation für den Zugriff auf Member-Funktionen vom Zeiger auf einen Vektor
In diesem Artikel werden verschiedene Methoden erläutert, wie man in C++ auf Member-Funktionen von einem Zeiger auf einen Vektor zugreifen kann.
Verwenden der ->
Notation für den Zugriff auf Member-Funktionen von einem Zeiger auf einen Vektor
vector
-Mitgliedsfunktionen können vom Zeiger auf den Vektor mit dem ->
-Operator aufgerufen werden. In diesem Fall übergeben wir den Zeiger auf den Vektor an eine andere Funktion. Als Member-Funktionen muss auf jedes Datenmitglied des struct
/class
mit der ->
Notation zugegriffen werden. Beachten Sie, dass bei der Übergabe des Zeigers auf das Objekt an die andere Funktion die Adresse des Operators (&
) vor der Variablen verwendet werden sollte.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> *vec) {
for (auto i = 0; i < vec->size(); ++i) {
cout << vec->at(i) << "; ";
}
cout << endl;
}
int main() {
vector<string> str_vec = {"bit", "nibble", "byte", "char",
"int", "long", "long long", "float",
"double", "long double"};
printVectorElements(&str_vec);
return EXIT_SUCCESS;
}
Ausgabe:
bit; nibble; byte; char; int; long; long long; float; double; long double;
Verwendung der (*)vector.member
-Notation für den Zugriff auf Member-Funktionen vom Zeiger auf einen Vektor
Der Zugriff auf den Wert, auf den der Zeiger zeigt, erfolgt über eine Dereferenzierungsoperation, die den ->
-Operator funktional ersetzen kann und die Lesbarkeit verbessert. Der Ausdruck (*vec).at(i)
kann im Wesentlichen die gleiche Operation des Member-Zugriffs durchführen. Beachten Sie, dass wir die Funktionsvorlage verwenden, die einen Vektor mit Elementen vom generischen Typ ausgeben kann.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> *vec) {
for (auto i = 0; i < (*vec).size(); ++i) {
cout << (*vec).at(i) << "; ";
}
cout << endl;
}
int main() {
vector<string> str_vec = {"bit", "nibble", "byte", "char",
"int", "long", "long long", "float",
"double", "long double"};
printVectorElements(&str_vec);
return EXIT_SUCCESS;
}
Ausgabe:
bit; nibble; byte; char; int; long; long long; float; double; long double;
Nehmen wir alternativ an, dass der Zeiger auf den vector
mit dem Funktionsaufruf new
alloziert wird und die Variable nicht an die andere Funktion übergeben wird. In diesem Fall kann man jede der obigen Notationen wählen. Im folgenden Beispiel demonstrieren wir die Iteration der Vektorelemente und die Ausgabeoperation mit dem ->
-Operator.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
void printVectorElements(vector<T> *vec) {
for (auto i = 0; i < vec->size(); ++i) {
cout << vec->at(i) << "; ";
}
cout << endl;
}
int main() {
auto *i_vec = new vector<int>(10);
printVectorElements(i_vec);
for (int i = 0; i < 10; ++i) {
i_vec->at(i) = i + 1;
cout << i_vec->at(i) << "; ";
}
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe (wenn die Eingabe +
ist):
0; 0; 0; 0; 0; 0; 0; 0; 0; 0;
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - C++ Function
- C++ Neudefinition von formalen Parametern
- Das Schlüsselwort const in der Funktionsdeklaration von Klassen in C++
- Die ShellExecute()-Funktion in C++
- Kotangensfunktion in C++
- Neudefinition des Standardparameters in C++
- Time(NULL)-Funktion in C++
Verwandter Artikel - C++ Pointer
- Dangling Pointer in C++
- Deklaration und Verwendung von unique_ptr in C++
- Dereferenzierungszeiger in C++
- Funktionalität und Unterschied zwischen *& und **& in C++
- Tauschen Sie zwei Zahlen mit Zeigern in C++
- Void-Zeiger in C++