Accedi alle funzioni dei membri dal puntatore a un vettore in C++
-
Usa la notazione
->
per accedere alle funzioni dei membri dal puntatore a un vettore -
Usa la notazione
(*)vector.member
per accedere alle funzioni dei membri dal puntatore a un vettore
Questo articolo spiegherà diversi metodi su come accedere alle funzioni membro da un puntatore a un vettore in C++.
Usa la notazione ->
per accedere alle funzioni dei membri dal puntatore a un vettore
Le funzioni membro vector
possono essere chiamate dal puntatore al vettore con l’operatore ->
. In questo caso, stiamo passando il puntatore al vettore a una funzione diversa. Come funzioni membro, è necessario accedere a qualsiasi membro dati della struct
/class
usando la notazione ->
. Notare che, quando si passa il puntatore all’oggetto alla diversa funzione, l’indirizzo dell’operatore (->
) deve essere utilizzato prima della variabile.
#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;
}
Produzione:
bit; nibble; byte; char; int; long; long long; float; double; long double;
Usa la notazione (*)vector.member
per accedere alle funzioni dei membri dal puntatore a un vettore
L’accesso al valore puntato dal puntatore avviene tramite un’operazione di dereferenziazione, che può sostituire funzionalmente l’operatore ->
e migliorare la leggibilità. L’espressione (*vec).at(i)
può essenzialmente eseguire la stessa operazione di accesso ai membri. Nota che stiamo usando il modello di funzione che può stampare un vettore con elementi di tipo generico.
#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;
}
Produzione:
bit; nibble; byte; char; int; long; long long; float; double; long double;
In alternativa, supponiamo che il puntatore al vettore
sia allocato usando la chiamata di funzione new
, e la variabile non sia passata alla funzione diversa. In tal caso, possiamo scegliere una qualsiasi delle notazioni precedenti. Nell’esempio seguente, dimostriamo l’iterazione dell’elemento vettoriale e l’operazione di output utilizzando l’operatore ->
.
#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;
}
Uscita (se l’ingresso è +
):
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 FacebookArticolo correlato - C++ Function
- Funzioni inline in C++
- La differenza tra argomenti e parametri delle funzioni in C++
- Le differenze tra funzioni virtuali e pure virtuali in C++
- Overload delle funzioni VS Override in C++
- Sovraccarico di funzioni in C++
- Usa la famiglia di funzioni std::stod in C++
Articolo correlato - C++ Pointer
- Passa il puntatore per riferimento in C++
- Puntatore a un array in C++
- Restituisce un puntatore in C++
- Usa i puntatori intelligenti in C++
- Controlla se il puntatore è NULL in C++