struct Point2D
{
float x;
float y;
};
// Point2D pt1[3]{};구조체도 배열로 만들 수 있음
// (1,1),(2,2),(3,3)으로 초기화하려고하면?
Point2D pt1[3]
{
{1,1},
{2,2},
{3,3}
};
for (int i = 0; i < 3; i++)
{
std::cout << pt1[i].x << "," << pt1[i].y << std::endl;
}
엑셀처럼 만드려면? 엑셀은 행과 열이 있다
int main()
{
int myArray[]{
0,0,1,0,0,
0,1,1,1,0,
1,1,1,1,1
};
for (int i = 0; i < 15; i++)
{
std::cout << myArray[i];
//5열 출력 후에 줄바꿈
if (i % 5 == 4)
//울타리 말뚝 오류 i % 5==0으로 찍으면 이상하게 찍힌다
// 01234 찍고 56789 찍고 1011121314찍으면 4로 나눠짐
// or (i+1) % 5 == 0 인덱스는 0부터 시작하기 때문
{
std::cout << std::endl;
}
}
}
cpp
int myArray[]{
0,0,1,0,0,
0,1,1,1,0,
1,1,1,1,1
};
// row.colunm
// 3행 3열 >> 인덱스 12
// 공식을 만들 수 있음
// 2행 4열 >> 인덱스 8
int index{(행-1) * 5 +(열-1)};
//행 = (가로길이-1) * 5 + (열-1)
//그림을 가져올 때 열과 행의 개념으로 가져오려고 할 수 있다
하지만 이렇게 어렵게 말고 쉽게 하는 방법 : 다차원 배열
1차원 x 2차원 xy 3차원 xyz
int x[3]; << 차원이 하나인 배열
int x[3][4] .....; << 다차원인 배열이다
int myArray[3][5]
{
{0,0,1,0,0},
{0,1,1,1,0},
{1,1,1,1,1}
};
3개 안에 5개 배열이 있다는 개념으로 [3][5] 순서
행렬도 따지면 [3]은 행(row-가로) [5]는 열(column-세로/기둥)
배열의 초기화
int myArray[4][3]{
{1,2,3},{4,5,6},{7,8,9},{10,11,12}
};
// 2차원 배열 초기화
// 중괄호 주의
for (int i = 0; i <4 ; i++) //행 반복
{
for (int j = 0; j < 3; j++) //열 반복
{
std::cout << myArray[i][j];
}
std::cout << std::endl; // 줄바꿈
}
다차원 배열
int x[ ][ ][ ]; 배열의 배열 개념으로 이해
메모리에 어떻게 저장되는가?
1차원 개념으로 저장됨 일렬로 쭉 저장되는 개념
인덱스 변환 형태로 자주 사용되고 2차원 배열 정도까지만 씀
이 이상 쓰기는 사람이 어려움