우선 아직 Vector의 기초적인 사용법을 모르시는 분들의 경우 다음 링크를 보고 오시기 바람.
https://learncom1234.tistory.com/2
이번에는 vector를 구조체나, 2차원 vector를 사용하는 방법을 알아보겠음.
1. 구조체 벡터
우선 구조체에 대해서는 알고 있을 것이라고 믿고, 간단한 구조체와 그걸 이용한 vector를 설명하겠다.
a. 생성
구조체를 쓰는 대표적인 예시인 특정 점들의 좌표를 저장하는 경우다.
특정 좌표를 가지는 점들의 벡터를 만들고 싶을때는 다음과 같이 생성한다.
b. 참조
chicken_index[i].x :chicken index의 i번째 원소에서 x를 참조한다.
c. 삽입
다음과 같은 방식으로 구조체 변수를 만들고 그 변수를 벡터에 넣는다.
d. 그 외 (vector가 arr이라고 할때)
arr.pop_back()은 그 구조체 변수 하나를 빼낸다.
arr.size()는 구조체 변수 개수를 센다.
e. 용도
특정 점들의 좌표 저장, 가격과 가치 저장등 여러가지 값을 가지고 있는 것을 벡터에 저장할때 사용하면 유용하다.
2. 2차원 벡터
a. 생성
대표적인 2차원 벡터의 생성 예시다.
바깥쪽 vector는 vector를 원소로 받고, 안쪽 vector는 int 변수를 원소로 받는다.
b. 참조
house_distance[i][j] : 바깥쪽 i번째 원소(벡터)안에서 j번째 원소(변수)값을 참조한다.
c. 삽입
통상적으로 제일 많이 나오는 상황인데 요약하면 안쪽 벡터를 선언후 값을 집어넣고, 그것을 우리의 이중 vector에 삽입한다.
d. 그 외 (vector가 arr이라고 할때)
arr[i].push_back(2) : arr의 i번째 벡터의 맨끝에 2를 집어넣는다.
arr[i].size(); arr의 i번째 벡터의 size를 반환한다.
arr[i].clear(); , arr[i].empty()도 같은 원리이다.
arr.size()는 속해있는 벡터의 개수, arr[i].empty는 바깥쪽 벡터에 속해있는 안쪽 벡터가 아무것도 없어야 한다.
e. 용도
2차원 배열의 사이즈가 정해지지 않았을때 제일 많이 사용한다.
구조체로 선언하기에 개수가 너무많은 경우, 구조체 벡터대신 2차원 벡터를 사용할 수 있다.
3. 구조체 벡터, 2차원 벡터 실전 예시(백준 15686번 치킨배달)
'알고리즘' 카테고리의 다른 글
백준 7576번 토마토 [C++] BFS/예상되는 실수/접근방식/풀이법/코드 (0) | 2022.01.31 |
---|---|
가장긴 증가하는 부분순열(LIS)(N^2) (0) | 2021.08.07 |
2차원 Vector의 정렬(C++) (0) | 2021.08.07 |
sort 사용법 (C++) (STL) (0) | 2021.08.07 |
Vector 기초(C++) (0) | 2021.08.06 |