728x90
Vector는 C++ 표준 라이브러리에서 동적 배열
즉, 크기가 고정되지 않은 배열을 의미한다.
(Array와 비슷하게 생각해도 된다.)
한 번에 한 타입만 저장이 가능하다.
저장공간보다 많은 양의 데이터를 추가시킬 경우 현재 보유하고 있는 메모리의 두 배만큼 할당한다.
이때, Vector는 메모리가 연속적인데 연속적으로 할당하지 못할 경우 다른 공간 모든 원소를 하나하나 복사한다.
이때 속도가 느려지기에 메모리 할당을 중간에 바꾸게 된다면 이 부분을 조심해야한다.
Vector의 ADT를 보면
push_back(): 벡터의 끝에 요소를 추가한다.
pop_back(): 벡터의 끝에서 요소를 제거한다.
at(): 주어진 인덱스에 해당하는 요소를 return
size(): 벡터에 저장된 요소의 개수를 return
front(): 벡터의 첫 번째 요소를 return == at(0)
back(): 벡터의 마지막 요소를 return == at(size()-1)
empty(): 벡터가 비어있는지 여부를 확인
clear(): 모든 요소를 제거하고 size를 0으로 만든다
resize(): 벡터의 크기를 지정한 크기로 변경하고 필요한 경우 기본 값으로 초기화
insert(): 주어진 위치에 data를 삽입
erase(): 주어진 위치의 data를 제거
아래는 vector를 사용한 예시이다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 벡터 생성
vector<int> myVector;
// push_back으로 요소 추가
myVector.push_back(10);
myVector.push_back(20);
myVector.push_back(30);
// 벡터의 크기 출력
cout << "Vector size: " << myVector.size() << "\n";
// 벡터의 모든 요소 출력
cout << "Vector elements: ";
for (int i = 0; i < myVector.size(); ++i) {
cout << myVector[i] << " ";
}
cout << std::endl;
// 벡터의 첫 번째 요소 출력
cout << "First element: " << myVector.front() << "\n";
// 벡터의 마지막 요소 출력
cout << "Last element: " << myVector.back() << "\n";
// 벡터가 비어있는지 확인
if (myVector.empty()) {
cout << "Vector is empty." << "\n";
} else {
cout << "Vector is not empty." << "\n";
}
// 벡터의 두 번째 요소 변경
myVector[1] = 25;
// 변경된 벡터의 모든 요소 출력
cout << "Modified vector elements: ";
for (int i = 0; i < myVector.size(); ++i) {
cout << myVector[i] << " ";
}
cout << "\n";
return 0;
}
728x90
'Data_structure' 카테고리의 다른 글
(Data_structure) Deque (1) | 2023.12.07 |
---|---|
(Data_Structure) Priority Queue (1) | 2023.12.07 |
(Data_structure) Queue (1) | 2023.12.07 |
(Data_Structure) BFS (Breadth-First Search) (1) | 2023.12.07 |
(Data_Structure) DFS (Depth-First Search) (0) | 2023.12.07 |