C++ってvector型ってのがあって、
それを使うと配列のサイズ気にせず作れるんですよねー。
でも、vector使い方忘れたし!みたいな!
そんな時用にお手軽に何でもぶち込めるようなものを作りました。
使い方は簡単。
CArray<int> test;
みたいなのも良いし、
typedef struct {
int x;
int y;
} kPos;
と作った構造体を
CArray<kPos> arrPos;
とするだけで簡単に管理出来ます。
追加する時は
arrPos.Add(xxx);
でOK~。
削除する時は
arrPos.RemoveAt(index);
で削除出来ます!
取り出す時は
arrPos.GetItem(index);
で構造体まるまるコピーで取得出来るし、
arrPos.GetItemPtr(index);
でポインタを取り出せますよー。
超簡単でしょ?
かなり便利なのでどうぞ使って下さいなー。
ちなみにこれはヘッダファイルのみで完結してます。
CArray.h等のファイルに保存して利用して下さいー。
ちなみに削除したらそのindexは消えて全部手前につめられるので
気をつけてね~。
以下ソース。
--------------------------------------
#ifndef Array_h
#define Array_h
#include <vector>
#include <string>
using namespace std;
template <class T>
class CArray
{
private:
std::vector<T> _array;
public:
CArray()
{
}
virtual ~CArray()
{
_array.clear();
}
void Clear()
{
_array.clear();
}
void Add(T addData)
{
_array.push_back(addData);
}
void RemoveAt(int iIndex)
{
typename vector<T>::iterator it = _array.begin();
it += iIndex;
_array.erase(it);
}
int Length()
{
return _array.size();
}
T GetItem(int iIndex)
{
return _array[iIndex];
}
T *GetItemPtr(int iIndex)
{
typename vector<T>::iterator it = _array.begin();
it += iIndex;
return &*it;
}
};
#endif