saurus2 2019. 6. 16. 00:01


#include 
#include 

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)

using namespace std;

template 
class veCtor {
public:
    int capacity; // capacity :: 용량
    int sz; // size -> sz
    T* vc;
    
    veCtor() {
        capacity = 8;
        sz = 0;
        vc = new T[capacity];
    }
    ~veCtor() {
        if (sz != 0)
            delete[] vc;
    }
    
    void push_back(int v) {
        // 꽉차있을 때
        if (capacity == sz) {
            capacity *= 2;
            T* tmp = new T[capacity];
            
            for (int i = 0; i < sz; i++)
                tmp[i] = vc[i];
            
            delete[] vc;
            vc = tmp;
        }
        
        vc[sz++] = v;
    }
    int size() {
        return sz;
    }
    int empty() {
        return !sz;
    }
    void clear() {
        delete[] vc;
        capacity = 8;
        sz = 0;
    }
    
    T& operator[](int i) {
        return vc[i];
    }
};

veCtor vc;

int main() {
    for (int i = 0; i < 10; i++) {
        int val;
        scanf("%d", &val);
        vc.push_back(val);
    }
    
    printf("\n");
    for (int i = 0; i < 10; i++) {
        printf("%d ", vc[i]);
    }
    printf("\n");
    
    printf("size :: %d\n", vc.size());
    printf("empty :: %d\n", vc.empty());
    //vc.clear();
    
    printf("size :: %d\n", vc.size());
    printf("empty :: %d\n", vc.empty());
    
    return 0;
}