ComputerScience/STL 4

[STL] vector

STL을 배제하고 문제를 풀어보면서 가장 힘들었던게 vector를 못쓴다는 점이었다. 그래서 이번기회에 vector를 구현해봤다. 평소에 안쓰던 문법을 많이 사용해본것같다. - 2021.04.03 수정 (카라츠바 알고리즘 구현을 위해 생성자 추가) #include #include template class _vector{ private: T* _elements; int _size, _cap; void init(int cap) { _size = 0; _cap = cap; _elements = (T*) malloc(sizeof(T) * _cap); } public: _vector(){ init(32); } _vector(int cap, int init_value) { init(cap); for (int i ..

ComputerScience/STL 2019.04.10

[STL] priority_queue

이번에 시험보면서 구현해 보는데 애를 먹어서 다시 한번 구현해 보게 되었다. 이게 꽉차면 동적으로 재할당 되면서 늘어나게 하고 싶어서 벡터를 재할당 하듯이 구현해 봤다. 이러면 매번 재사용 할 때 메모리를 덜 잡아먹지 않을까? 하는 바람으로.. template void _swap(T& e1, T& e2){ T tmp = e1; e1 = e2; e2 = tmp; } template class _priority_queue{ private: T* pq; int _size, cap; public: _priority_queue():_size(0), cap(2){ pq = new T[cap]; }; ~_priority_queue(){ delete[] pq; } void resize(int ncap){ cap = n..

ComputerScience/STL 2019.04.10

[STL] Queue

그냥 공부하면서 queue를 구현 해 보게 되었는데 처음에는 작은 사이즈로 queue를 선언하고 크기가 커지면 동적으로 계속해서 늘리게 하려고 했으나 어디서 문제가 생겼는지는 아직 모르겠는데 계속 오류가 발생한다. 그래서 queue의 최대 용량을 정해두고 circular queue를 구현해 보게 되었다. const int NMAX = 100005; template struct _queue{ T* q; int _front, _rear, _size, cap; _queue():_front(0), _rear(0), _size(0), cap(NMAX){ q = new T[cap]; } ~_queue(){delete[] q;} int size(){return _size;} int full(){return _size..

ComputerScience/STL 2019.04.10