STL을 처음으로 사용하는 과제
ex00
- 특정 자료구조에서 원소가 몇 번째에 속하는지 찾는
easyfind()함수를 만들 것. - 자료구조(컨테이너)는 아무거나 상관없음. 단, 원소는 반드시 int여야만 함.
ex01
- n개의 정수를 담을 수 있는 Span 클래스를 만들기.
- 자료구조 속에 숫자들이 있다고 가정하자. 임의의 숫자 두 개의 차이 중에서, 가장 긴 것을
longestSpan, 짧은 것을shortestSpan이라고 하자.
cpp
class Span{
private:
vector<int> vec;
int maxsize;
};
ex02
- iterator가 있는 Stack을 MutantStack 클래스로 작성
- Stack을 상속받고, iterator 기능을 추가해야 함.
기본적으로 Stack이 어떻게 생겼는지 보자.
cpp
template <class _Tp, class _Container = deque<_Tp> > class _LIBCPP_TEMPLATE_VIS stack;
template <class _Tp, class _Container /*= deque<_Tp>*/>
class _LIBCPP_TEMPLATE_VIS stack
{
public:
typedef _Container container_type;
typedef typename container_type::value_type value_type;
typedef typename container_type::reference reference;
typedef typename container_type::const_reference const_reference;
typedef typename container_type::size_type size_type;
static_assert((is_same<_Tp, value_type>::value), "" );
protected:
container_type c;
- deque 컨테이너를 기반으로 만들어진 것이 Stack.
- deque의 일부 함수를 막아두었다고 봐도 될 것 같다.
- Stack 안에 container_type이라는 것이 있고, 거기에 stack에서 쓸 수 있는 함수를
- 따라서 deque을 이용해서 iterator를 만드려면, 다음과 같이 하면 된다.
cpp
typedef typename MutantStack<T>::stack::container_type::iterator iterator;
// MutantStack 안에 stack 안에 container_type 안에 iterator 타입을 새롭게 정의