가변 길이 배열은 2차원 배열에서 각각의 첫번째 원소에 다른 길이의 배열을 담는 것이다.
아래는 C 스타일이다.
#include <iostream>
using namespace std;
int main()
{
// ------- 고정 길이 배열 -------
int arr[10]{ 5 };
for (int i = 1; i < 10; i++)
arr[i] = arr[i - 1] + 5;
// ------- 가변 길이 배열 (C 스타일 배열 사용) -------
int arr2[3]{ 1, 2, 3 };
int arr3[5]{ 4, 5, 6, 7, 8 };
int* variableArr[3];
*variableArr = arr;
*(variableArr + 1) = arr2;
*(variableArr + 2) = arr3;
cout << variableArr[0][2] << endl; // 15
cout << variableArr[1][2] << endl; // 3
cout << variableArr[2][4] << endl; // 8
}
각 첫번째 원소에 넣고자하는 전체 배열의 주소가 잘 들어간걸 확인할 수가 있다.
C++에선 STL 라이브러리 사용한다, 그 중 std::array와 std::vector.
#include <array> 와 #include <vector> 각각의 헤더파일 추가하는건 필수다.
#include <iostream>
#include <array>
#include <vector>
using namespace std;
int main()
{
// ------- 고정 길이 배열 -------
int arr[10]{ 5 };
for (int i = 1; i < 10; i++)
arr[i] = arr[i - 1] + 5;
// ------- 가변 길이 배열 (C 스타일 배열 사용) -------
int arr2[3]{ 1, 2, 3 };
int arr3[5]{ 4, 5, 6, 7, 8 };
array<int*, 3> arrVariableArr;
vector<int*> vecVariableArr;
arrVariableArr[0] = arr;
arrVariableArr[1] = arr2;
arrVariableArr[2] = arr3;
vecVariableArr.push_back(arr);
vecVariableArr.push_back(arr2);
vecVariableArr.push_back(arr3);
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 위임 생성자 (delegating constructor) (0) | 2022.08.05 |
---|---|
C++ NULL과 nullptr의 차이 (0) | 2022.08.04 |
C/C++ 포인터 역참조 (deference) (0) | 2022.08.02 |
C++ 얕은 복사 깊은 복사 (Shallow/Deep Copy) (0) | 2022.07.29 |
C++ 임시 객체 (Temporary Object) (0) | 2022.07.29 |