Comment retourner un tableau à partir d'une fonction en C++
- Utiliser la manipulation des pointeurs pour retourner un tableau de type C à partir de la fonction en C++
-
Utiliser le conteneur
vector
pour retourner le tableau à partir de la fonction en C++
Cet article présente la façon de retourner un tableau à partir de la fonction en C++.
Utiliser la manipulation des pointeurs pour retourner un tableau de type C à partir de la fonction en C++
En C/C++, lorsque la notation array[]
est passée en paramètre de fonction, ce n’est qu’un pointeur vers le premier élément du tableau remis. Par conséquent, le prototype de fonction que nous devons construire est celui qui retourne le pointeur au type stocké dans le tableau ; dans notre cas, il s’agit de int
. Une fois la fonction retournée, nous pouvons accéder à ses éléments avec une notation de tableau []
ou en déréférençant le pointeur lui-même (peut-être faire un peu d’arithmétique de pointeur comme avant ceci).
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int *MultiplyArrayByTwo(int arr[], int size) {
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
return arr;
}
int main() {
constexpr int size = 10;
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *ptr = MultiplyArrayByTwo(c_array, size);
cout << "array = [ ";
for (int i = 0; i < size; ++i) {
cout << ptr[i] << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
Production:
array = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, ]
Notez que la fonction MultiplyArrayByTwo
peut être implémentée en tant que void
et nous pouvons accéder aux éléments modifiés de la variable c_array
puisqu’ils pointent vers la même adresse, comme le montre l’exemple suivant:
#include <iostream>
using std::cin;
using std::cout;
using std::endl using std::string;
void MultiplyArrayByTwo(int arr[], int size) {
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
}
int main() {
constexpr int size = 10;
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
MultiplyArrayByTwo(c_array, size);
cout << "array = [ ";
for (int i = 0; i < size; ++i) {
cout << c_array[i] << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
Utiliser le conteneur vector
pour retourner le tableau à partir de la fonction en C++
Dans cette version, nous stockons notre tableau dans un conteneur vector
, qui peut mettre à l’échelle ses éléments de manière dynamique, il n’est donc pas nécessaire de passer le paramètre size
.
Notez que nous retournons un objet différent de la fonction, donc nous ne pouvons pas utiliser cpp_array
pour y accéder. Nous devons créer une nouvelle variable et lui attribuer la valeur de retour de la fonction. Ensuite, nous pouvons itérer à travers elle et produire le résultat.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl using std::string;
using std::vector;
vector<int> MultiplyArrayByTwo(const vector<int> *arr) {
vector<int> tmp{};
for (const auto &item : *arr) {
tmp.push_back(item * 2);
}
return tmp;
}
int main() {
vector<int> cpp_array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto cpp_array_2x = MultiplyArrayByTwo(&cpp_array);
cout << "array = [ ";
for (int i : cpp_array_2x) {
cout << i << ", ";
}
cout << "]" << endl;
return EXIT_SUCCESS;
}
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 FacebookArticle connexe - C++ Function
- Gérer les arguments à l'aide de getopt en C++
- Fonctions en ligne en C++
- La différence entre les arguments de fonction et les paramètres en C++
- Les différences entre les fonctions virtuelles et pures virtuelles en C++
- Surcharge de fonction en C++
- Surcharge de fonction VS Override en C++