template<typename T>
class CArr
{
public:
CArr(std::vector<T> arr,int nInGroup=6);
~CArr();
bool SetCurrentPos(int iGroup,int iElement); //第iGroup组元素,第iElement个元素
std::vector<T> GetVisibleElements();
private:
std::vector<T> m_arr;
int m_elementCount; //总共有多少个元素
int m_nInGroup; //每组多少个元素
int m_iGroup; //第iGroup组元素
int m_iElement; //第iElement个元素
};
template<typename T>
CArr::CArr(std::vector<T> arr,int nInGroup = 6):m_arr(arr)
,m_elementCount(arr.size())
,m_nInGroup(nInGroup)
,m_iGroup(0)
,m_iElement(0)
{
}
template<typename T>
CArr::~CArr()
{
}
template<typename T>
//设置第几组,第几个元素
bool CArr::SetCurrentPos(int iGroup,int iElement)
{
if(iElement >= m_nInGroup){
return false;
}
int totalGroup = m_elementCount/m_nInGroup+(m_elementCount%m_nInGroup==0?0:1);
if(iGroup >= totalGroup
{
return false;
}
m_iGroup = iGroup;
m_iElement = iElement;
return true;
}
//获取可见元素集合
template<typename T>
std::vector<T> CArr::GetVisibleElements()
{
int _max_ = (m_iGroup+1)*m_nInGroup+iElement+8>m_elementCount
?m_elementCount:(m_iGroup+1)*m_nInGroup+iElement+8;
std::vector<T> visible;
for(int i=0; i<_max_; i++)
{
visible.push_back(m_arr[i]);
}
return visible;
}