1. function(Key) 에 의해 유일한 인덱스가 생성되지 않는 경우
2. function(Key)에 의해 생성되는 인덱스가 밀집하지 않는경우
3. 보관할 데이터의 최대치가 결정되기 힘든 경우
4. 보관된 데이터와 Key를 비교할 수 있는 메소드를 제공해야 한다.
4.1 보관된 데이터를 Key로 변환할 수 있는 메소드를 제공하고 두개의 Key를 비교하는 메소드를 제공하는 방법
4.2 보관된 데이터와 Key를 비교하는 메소드와 두개의 Key를 비교하는 메소드를 제공하는 방법
5. 내부적으로 데이터를 보관할 위치를 찾는 메소드를 제공해야 한다.
5.1 해당 메소드를 이용해서 보관된 위치도 찾을 수 있어야 한다.
6. 동일한 Key값을 갖는 데이터를 보관할 지 안 할지에 대한 정책을 정해야 한다.
장점: 이진 탐색을 통해 검색 속도를 높일 수 있다.
-STL의 vector를 base클래스로 하는 특정 Key순으로 보관할 위치를 결정할 수 있는 파생된 클래스를 작성해 보시오.
작성된 클래스가 제대로 작동하는 지 확인하는 stub 프로그램도 작성하시오.
#ifndef __KEY_VECTOR_H
#define __KEY_VECTOR_H
#include <vector>
using namespace std;
using std::endl;
template <class T, class K, class F,class F2>
class KeyVector:protected vector<T>
{
typedef vector<T>::iterator kiter;
const int max_index;
F fun;
F2 fun2;
public:
FunVector(int _max_index):vector<T>(_max_index,0),max_index(_max_index)
{
}
bool KeepIn(T in)
{
//구현하시오.
}
void KeepInForce(T in)
{
//구현하시오.
}
T PickOut(K key)
{
//구현하시오.
}
T Peek(K Key)
{
//구현하시오.
}
bool Exist(K key)
{
//구현하시오.
}
void Erase(K key)
{
//구현하시오.
}
void Erase(T in)
{
//구현하시오.
}
private:
kiter FindSeat(K key)//보관할 위치 및 보관된 위치를 찾는 메소드
{
//구현하시오.
}
//구현하시오.
};
#endif
'Education > Bit 18th' 카테고리의 다른 글
물미로 (0) | 2009.08.03 |
---|---|
큐, 스택 (0) | 2009.08.03 |
배열 - funtion(데이터)에 의해 보관할 위치를 결정 (0) | 2009.08.03 |
C기초 플러스 소스 (0) | 2009.08.03 |
BaseBallTeam (야구팀만들기) (0) | 2009.08.03 |
댓글