C++ 配列を返す方法:ポインタ、参照、std::array徹底解説
C++では、配列を関数の戻り値として直接返すことはできません。なぜなら、配列名は配列の先頭要素を指しているポインタに退化してしまうからです。ただし、ポインタや参照を使って配列を返す方法があります。
Pointerを使用して配列を返す例を次に示す:
#include <iostream>
int* createArray(int size) {
int* arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = i;
}
return arr;
}
int main() {
int size = 5;
int* arr = createArray(size);
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
// Remember to delete the dynamically allocated array to avoid memory leaks
delete[] arr;
return 0;
}
また、配列を戻り値として返すために引用を使用する方法もあります。以下にコードの例を示します:
#include <iostream>
void createArray(int*& arr, int size) {
arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = i;
}
}
int main() {
int size = 5;
int* arr;
createArray(arr, size);
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
// Remember to delete the dynamically allocated array to avoid memory leaks
delete[] arr;
return 0;
}
これらの2つの方法では、配列が動的に割り当てられ、配列の先頭アドレスが返されます。使用後には、これらの動的に割り当てられたメモリを手動で解放する必要があります。これによりメモリリークが回避されます。