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 << " ";
}
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;
동적 배열
std::vector를 구현해주세요.필수부분
- iterator
- operator *, ++, --, ==, != 구현
- push_back()
- pop_back()
- T& operator[](int idx)
- begin(), end(), erase()
- 필요하다고 생각되는 부분은 더 구현해도 됩니다.