반응형
#include <vector>
/**************************************************
장점 : 빠른 접근
단점 : 앞쪽으로 넣을 수록 데이터를 뒤로 보내는 작업이 발생함
주의 : 템플릿은 H파일과 C파일로 나누지 않는 것이 좋음
**************************************************/
template<typename T>
class RVector : public std::vector<T>
{
private:
typename std::vector<T>::iterator it;
void count(int i)
{
it = begin();
for(int k=0; k<i && k<getSize(); k++)
it++;
}
void countR(int i)
{
it = end();
for(int k=0; k<i && k<getSize(); k++)
it--;
}
public:
T getFirst(){ return front(); }
T getLast() { return back(); }
int getSize(){ return vector<T>::size(); }
T getAt(int i)
{
if(i < getSize())
return at(i);
return NULL;
}
T getAtReverse(int i)
{
if(i < getSize())
{
i = size() - i -1;
return at(i);
}
return NULL;
}
void insertAt(int i, const T& a)
{
count(i);
insert(it, a);
}
void insertAtReverse(int i, const T& a)
{
countR(i);
insert(it, a);
}
void insertAtFirst(const T& a){ insert(begin(), a); }
void insertAtLast(const T& a){ push_back(a); }
void replaceAt(int i, const T& a)
{
count(i);
it = erase(it);
insert(it, a);
}
void replaceAtReverse(int i, const T& a)
{
countR(i);
erase(it);
it = erase(it);
insert(it, a);
}
void removeAt(int i)
{
count(i);
erase(it);
}
void removeAtReverse(int i)
{
countR(i);
erase(it);
}
};
반응형
'Programings > Data Structs' 카테고리의 다른 글
[Data Struct] 큐 (Queue) - 링크드 리스트를 이용한 큐 (2) | 2010.08.17 |
---|---|
[Data Struct] 스택 (Queue) - 배열을 이용한 스택 (0) | 2010.08.17 |
[Data Struct] 스택 (Stack) - 링크드 리스트를 이용한 스택 (0) | 2010.08.12 |
[Data Struct] 이중 링크드 리스트 (0) | 2010.08.12 |
[Data Struct] 단순 링크드 리스트 (0) | 2010.08.12 |