본문 바로가기

: Algorithm

[C/C++] vector 구현

반응형

특정 알고리즘 대회에서는 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