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 |
댓글