반응형
C++의 vector를 javascript의 array처럼 쓰고 싶어서 몇가지의 기능을 추가한 vector를 만들었다.
지원 기능
- 중복 제거
- at함수 마이너스(-)로 호출
- operator[] 마이너스(-)로 호출
- size() - 1 -> lastIndex()
- pop 함수 호출할때 지워진 원소 return
- pop_back은 pop 함수와 같은 역할을 함
- pop_fast로 기존의 pop_back을 사용
코드
#include <vector>
#include <algorithm>
using namespace std;
template <typename T>
class CVector
{
public:
vector<T> vec;
CVector()
{
}
CVector(int size)
{
vec.reserve(size);
}
CVector(size_t size)
{
vec.reserve(size);
}
void push(T v)
{
vec.push_back(v);
}
void push_back(T v)
{
vec.push_back(v);
}
void remove_duplicate()
{
vec.erase(unique(vec.begin(), vec.end()), vec.end());
}
void fast_pop()
{
vec.pop_back();
}
void clear()
{
vec.clear();
}
T &at(size_t idx)
{
if (idx < 0)
{
idx = vec.size() + idx;
}
return this->vec[idx];
}
T pop()
{
T ld = vec.back();
vec.pop_back();
return ld;
}
T pop_back()
{
T ld = vec.back();
vec.pop_back();
return ld;
}
T back()
{
return vec.back();
}
T front()
{
return vec.front();
}
T &operator[](size_t idx)
{
return this->at(idx);
}
size_t size()
{
return vec.size();
}
size_t lastIndex()
{
return this->size() - 1;
}
bool empty()
{
return vec.empty();
}
auto begin()
{
return vec.begin();
}
auto end()
{
return vec.end();
}
auto capacity()
{
return vec.capacity();
}
};
반응형