[C++]STL::map 구현 - 학습경험 #1

3054 단어 stl42SeoulC42Seoul

42seoul에서 진행하는 과제 중, c++ container의 stl::map을 구현하는 과제가 있답니다.

그동안 과제들을 수행하고 해커톤 등에 참여하면서, 조금씩 얻은 지식들이 있긴 했지만..! map이라는 자료구조에 대해서는 아직 깊게 아는 바가 없었어요.

일단 모르는 내용은 알아야 하는 법이니, cppreference에서 정의를 검색해봅시다.
(세부 내용은 이미지 클릭!)

음...








대략 멍~ 해진다..





자! 정신줄을 붙잡고, 핵심부터 나눠서 이해해 나가봅시다. 일단은 이게 핵심인거 같군요!

-> store elements formed by a combination of a key value and a mapped value, following a specific order

-> key 와 value의 짝으로 이루어진 형태의 자료구조를, 특정한 순서에 따라 저장해둔 것.

생각해보면, 1달 간 Python_Django Piscine을 진행했을 때, 이러한 형태의 구조를 사용해본 기억이 나요. python의 Dictionary 말이에요!


좋아요 좋아..이제 뭔가 해볼 수 있을거에요.(침착해..!)

일단, 문제를 해결할 때에는 항상 이루어야 할 목적을 확실히 하는 것부터 시작해봅시다.



[달성목적] Python의 dictionary와 같은 내부구조를 가진 container 구현


목적달성을 위한 필요재료:
1. Key 와 Val 로 이루어진 자료형 "A"
2. A를 포함하고, 특정 규칙으로 나열가능한 자료형 "B"


간단하게 나눠서 생각해보면 이 정도!?

그럼 일단 key / value의 두 가지 변수를 묶어서, 한 쌍으로 들고 있는 구조체 or 클래스를 만들어야 하겠죠.

간단하게, template class를 이용하여, 서로 다른 두 가지 값을 세트로 묶어 들고다닐 수 있는 클래스를 만들어보는 것부터 해보겠어요.

template<class T1, class T2>
class pair
{
        public:
            T1 first;
            T2 second; 

            typedef T1 first_type;
            typedef T2 second_type;

            //===============================================================================
            //================================= Constructer =================================
            //===============================================================================
            pair() : first(), second() {}

            pair(const T1& param_first, const T2& param_second) : first(param_first), second(param_second)
            {

            }

            pair(const pair<T1, T2>& original) : first(original.first), second(original.second) 
            {

            }
}

음.. 상단에 정의한 "A"를 만드는 건 이런 방식으로 완성해나가면 될텐데,
중요한 것은 "B" 같군요.

어떤 방식으로 이 자료형을 나열하는 것이 좋을지 조사를 해보는 게 좋을 것 같아요..!

제가 이해할 수 있는 레퍼런스를 많이 찾는 것이 관건!
(역시 검색능력&활용능력 도 프로그래밍 실력..)

To Be Continue..

좋은 웹페이지 즐겨찾기