C++ Vector

NYH·2023년 12월 9일

C++

목록 보기
14/17

Vector

Vector란?

Vector는 동적 배열 구조를 C++로 구현한 것으로 맨 끝에서만 삽입 및 삭제가 일어나는 구조입니다.
일반 배열과 차이점이라면 동적으로 크기가 변하고 메모리가 연속적이기 떄문에 자동으로 배열의 크기를 조절할 수 있고 유연하게 객체 추가 및 삭제가 가능하다는 점입니다.

시간 복잡도는 다음과 같습니다.
탐색 : O(1)
삽입과 삭제 : O(N)
삽입과 삭제가 O(N)인 이유는 특정 위치로 삽입 시 해당 위치로부터 모든 데이터가 한 칸씩 뒤로 옮겨져야 하며, 삭제 시에는 해당 위치로부터 모든 데이터가 한 칸씩 앞으로 옮겨져야 하기 떄문입니다.


기본 사용법

#include <vector>
#include <iostream>

int main() {
    // 빈 vector 생성
    std::vector<int> myVector;

    // 요소 추가
    myVector.push_back(10);
    myVector.push_back(20);
    myVector.push_back(30);

    // 요소 접근
    std::cout << "첫 번째 요소: " << myVector[0] << std::endl;

    // 크기 확인
    std::cout << "벡터 크기: " << myVector.size() << std::endl;

    // 벡터 순회
    for (int i : myVector) {
        std::cout << i << " ";
    }

    return 0;
}


기본 함수

  • push_back(): 벡터의 끝에 요소를 추가합니다.
  • pop_back(): 벡터의 끝에서 요소를 제거합니다.
  • size(): 벡터의 크기를 반환합니다.
  • empty(): 벡터가 비어 있는지 여부를 확인합니다.
  • clear(): 벡터의 모든 요소를 제거합니다.


값 접근

for (int i : myVector) {
    // 벡터의 각 요소에 대해 작업 수행
    std::cout << i << " ";
}


반복자 iterator 사용

for (std::vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) {
    // 벡터의 각 요소에 대해 작업 수행
    std::cout << *it << " ";
}


특정값 초기화

for (std::vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) {
    // 벡터의 각 요소에 대해 작업 수행
    std::cout << *it << " ";
}


다차원 벡터

#include <vector>
std::vector<std::vector<int>> twoDVector;


문제 풀이

문제 1.

동적 배열 std::vector를 구현해주세요.

필수부분

  • iterator
    • operator *, ++, --, ==, != 구현
  • push_back()
  • pop_back()
  • T& operator[](int idx)
  • begin(), end(), erase()
  • 필요하다고 생각되는 부분은 더 구현해도 됩니다.


profile
그냥 해라

0개의 댓글