반응형
std::vector
벡터에 새로운 원소를 추가할 경우 동작
push_back, insert
- 원소를 삽입할때 공간이 남아 있다면 O(1)의 시간이 걸린다.
- 하지만 공간이 없을 경우 아래의 로직이 수행된다.
- 2*size 크기의 메모리를 새로 할당
- 새로 할당한 메모리로 기존 원소를 전부 복사/이동
- 데이터 포인터를 새로 할당한 메모리 주소로 지정
- 원소를 추가하고 벡터크기를 1만큼 증가한다.
- 이 경우 O(n)의 시간복잡도이다.
예제
초기화 방법
// 크기가 0인 벡터 선언
std::vector<int> vec1;
// 지정한 초깃값으로 벡터 선언
std::vector<int> vec2 = {1, 2, 3, 4, 5};
// 크기가 10인 벡터 선언
std::vector<int> vec3(10);
// 크기가 10이고 모든 원소가 5로 초기화된 벡터 선언
std::vector<int> vec4(10, 5);
vector 사용예제
#include <vector>
#include <iostream>
using namespace std;
int main()
{
std::vector<int> vec1;
vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);
vec1.push_back(4);
for (int n : vec1)
{
cout << n << ", ";
}
cout << endl;
// 맨 앞에 5 추가
vec1.insert(vec1.begin(), 5);
for (int n : vec1)
{
cout << n << ", ";
}
cout << endl;
//0번 제거하기
vec1.erase(vec1.begin());
for (int n : vec1)
{
cout << n << ", ";
}
cout << endl;
// 0~1번째까지 제거하기
vec1.erase(vec1.begin(), vec1.begin() + 2);
for (int n : vec1)
{
cout << n << ", ";
}
cout << endl;
}
반응형
'자료구조 와 알고리즘 > c++' 카테고리의 다른 글
std::list (0) | 2022.04.24 |
---|---|
std::array (0) | 2022.04.23 |