vector v[]

  • vector<int> v[1001]1001개vector<int>를 담고 있는 정적 배열이다.
  • 각 요소가 벡터이므로, 각 인덱스마다 서로 다른 정점의 연결 정보를 저장할 수 있다.
  • 주로 그래프의 인접 리스트를 구현할 때 사용한다.
vector<int> graph[1001];  // 1001개의 벡터 배열 선언

// 정점 1에 연결된 정점 추가
graph[1].push_back(2);
graph[1].push_back(3);

// 정점 2에 연결된 정점 추가
graph[2].push_back(4);
graph[2].push_back(5);

// 정점 1에 연결된 모든 정점 출력
for (int i = 0; i < graph[1].size(); i++) {
    cout << graph[1][i] << " ";  // 출력: 2 3
}

graph[i]가 각각 독립적인 벡터로 동작하므로, 그래프의 각 정점에 연결된 정점 목록을 별도로 저장할 수 있다.

vector v()

  • vector<int> v(1001)크기가 1001단일 벡터를 생성한다.
  • 이 벡터는 하나의 정점에 연결된 정보를 저장할 때만 유용하며, 여러 정점에 대한 연결 정보는 표현할 수 없다.
  • 즉, 단일 배열처럼 동작하며 인덱스를 통해 하나의 값을 저장할 수 있다.
vector<int> graph(1001);  // 크기 1001인 단일 벡터 생성

graph[1] = 2;  // 정점 1에 연결된 값을 저장 (하나의 값만 가능)
graph[2] = 4;  // 정점 2에 연결된 값을 저장

cout << graph[1] << " " << graph[2];  // 출력: 2 4

하나의 정점에 대한 단일 값(또는 가중치)을 저장할 때 적합하며, 연결된 정점의 목록을 저장할 수 없다.

vector<int> v(5)에서 v[1]=2vector<int> v[5]에서 v[1].push_back(2)는 같은게 아닌지?

비슷해 보이지만 다르다.

  • vector<int> v(5)
    • 크기가 5인 벡터 v생성하고, 각 요소는 기본값 0으로 초기화 된다.
    • v[1]=2는 벡터의 두번째 요소(index 1)에 2를 할당하는 것
      • 즉 v[1]의 값은 0에서 2로 변경
    • v는 [0, 2, 0, 0, 0]이 된다.
  • vector<int> v[5]
    • 크기가 5인 배열 v를 선언
    • 각 요소는 vector<int> 타입
      • v[0], v[1], v[2], v[3], v[4]는 각각 vector<int>이다.
    • v[1].push_back(2)v[1]벡터에 2를 추가하는 코드
    • v는 [{}, {2}, {}, {}, {}] 형태가 된다.

Tags:

Categories:

Updated: