Zugriff auf Member-Funktionen vom Zeiger auf einen Vektor in C++

  1. Verwenden der -> Notation für den Zugriff auf Member-Funktionen von einem Zeiger auf einen Vektor
  2. 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::cout; using std::cin;
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::cout; using std::cin;
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::cout; using std::cin;
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;

Verwandter Artikel - C++ Function

  • Callback-Funktionen in C++ Verwenden
  • Verwandter Artikel - C++ Pointer

  • Erstellen von booleschen Funktionen in C++
  • Verwandter Artikel - C++ Vector

  • Wie entferne ich ein Element aus einem Vektor in C++
  • Erstellen von booleschen Funktionen in C++