본문 바로가기
Education/Bit 18th

배열 - funtion(데이터)에 의해 보관할 위치를 결정

by ★용호★ 2009. 8. 3.

1. function(데이터)에 의해 유일한 인덱스가 선택될 수 있어야 한다.

2. function(데이터)에 의해 생성될 수 있는 인덱스가 밀집될 수록 좋다.

3. function(데이터)에 의해 생성될 수 있는 인덱스가 0부터 시작하면 좋다.

4. function(데이터)에 의해 생성될 수 있는 인덱스의 최대치가 고정될 수록 좋다.


5. 배열 생성시 보관할 장소를 초기화 하여야 한다.(미 보관 중임을 판단할 수 있도록)

6. 특정 인덱스에 데이터가 이미 보관되어 있는지를 확인할 수 있어야 한다.

7. (1~4)가 만족한다면 배열 생성시에 결정된 크기가 변할 필요가 없다.

8. 보관된 데이터를 꺼낸 위치는 미 보관 중임을 판단할 수 있도록 reset하여야 한다.


9. 만약 function(Primary Key)가 (1~4)에 적용된다면 Primary Key에 의한 관리 기능을 위한 자료주로 배열이

최선의 선택이 될 수가 있다. (이유:탐색 속도 O(1))


-STL의 vector를 base클래스로 하는 function(데이터)에 의해 보관할 위치를 결정할 수 있는 파생된 클래스를 작성해 보시오.

  작성된 클래스가 제대로 작동하는 지 확인하는 stub 프로그램도 작성하시오.

 #ifndef __FUN_VECTOR_H
#define __FUN_VECTOR_H

#include <vector>
using namespace std;
using std::endl;

template <class T, class K, class F>
class FunVector:protected vector<T>
{
     const int max_index;
     F fun;
public:
     FunVector(int _max_index):vector<T>(_max_index,0),max_index(_max_index)
    {

     //구현하시오.
    }
    bool KeepIn(T in) //해당 인덱스에 보관되어 있으면 보관하지 않고 false반환
    {
     //구현하시오.
    }
    void KeepInForce(T in) //이미 해당 인덱스에 보관되어 있어도 새로운 in으로 보관
    {
      //구현하시오.
    }
     T PickOut(K key) //보관된 데이터를 꺼내고 해당 위치 reset
    {
      //구현하시오.
    }
    T Peek(K Key)  //보관된 데이터를 확인, 보관된 데이터 유지
    {
      //구현하시오.
    }
     bool Exist(K key)
    {
      //구현하시오.
     }
     void Erase(K key)
     {
      //구현하시오.
     }
     void Erase(T in)
     {
      //구현하시오.
     }

private:
     //구현하시오.
};

#endif

'Education > Bit 18th' 카테고리의 다른 글

큐, 스택  (0) 2009.08.03
배열 - 특정 Key순으로 보관  (0) 2009.08.03
C기초 플러스 소스  (0) 2009.08.03
BaseBallTeam (야구팀만들기)  (0) 2009.08.03
StuManager, BookManager 짱강사님 소스 인쇄용  (0) 2009.08.03

댓글