반응형
특정 알고리즘 대회에서는 lib제한이 있을 수 있다.
그런 경우를 대비해서 vector 구현방법에 대해서 알아보자.
물론 전체 기능을 구현할 수는 없으니, 주요한 기능인
- push_back
에 대해서만 작성하였음.
#include <vector> 간단하게 구현해보자.
template <typename T>
class Vector {
private:
T *values;
int size;
int cap;
public:
Vector() {
values = new T[4];
size = 0;
cap = 4;
}
Vector(int default_capacity) {
values = new T[default_capacity];
size = 0;
cap = default_capacity;
}
~Vector() {
delete[] values;
}
void push_back(T new_value) {
if(size == cap) {
T *temp = new T[cap * 2];
for (int i = 0; i < cap) {
temp[i] = values[i];
}
delete[] value;
values = temp;
cap *= 2;
}
values[size++] = new_value;
}
};
내 페이지의 카라츄바 문제(https://jintelli.tistory.com/24)에서도 이 벡터 함수를 참고해서 풀었음
반응형
': Algorithm' 카테고리의 다른 글
[C/C++] 제곱 (0) | 2021.05.26 |
---|---|
[C/C++] 큰 수의 곱셈 (karatsuba, 카라츄바) (2) | 2021.05.04 |
[C/C++] 트라이 (Trie) (0) | 2021.04.22 |
알고리즘 사이트 추천 (0) | 2021.04.15 |
[C++] 더블 링크드 리스트 (Double Linked List) (0) | 2021.04.15 |