独自のバージョンの C++ STL ベクトルを作成しようとしています<> 動的に拡大縮小するリストを作成したい...push_back、push_front、pop_back、pop_front、remove、removeAt、clear、およびサイズ...私はほとんど問題なくこれらすべてを書き、ビルドエラーや警告を受けていません.クラスをインスタンス化しようとすると、Eclipseはトークンの後にディメンションを探していることを教えてくれます.たとえば、そのタイプの配列になる...
DynaArray<int> Bob;
ここでは、int の後に [] 演算子が必要です。
これが私のクラスが現在どのように見えるかです
public class DynaArray<T>
{
int Size = 0;
int CurrentCount = 0;
int LastSpot = 0;
T[] Array;
DynaArray(int _size)
{
Size = _size;
}
@SuppressWarnings("unchecked")
void push_back(T _element)
{
CurrentCount++;
if(CurrentCount > Size)
{
//make a new array for double the size;
if( Size == 0 )
{
Size = 2;
Array = (T[]) new Object[Size];
}
else
{
int OldSize = Size;
Size = Size*2;
T[] TempArray;
TempArray = (T[]) new Object[Size];
int i = 0;
for( ; i < OldSize; i++ )
{
//Copy over info from Array to TempArray
TempArray[i] = Array[i];
}
Array = TempArray;
}
}
//Now add the new element onto the array
Array[LastSpot] = _element;
LastSpot++;
}
@SuppressWarnings("unchecked")
void push_front(T _element)
{
CurrentCount++;
if( Size == 0)
{
Size = 2;
Array = (T[]) new Object[Size];
Array[0] = _element;
return;
}
else
{
int OldSize = Size;
Size = Size+1;
T[] TempArray;
TempArray = (T[]) new Object[Size];
int i = 1;
for( ; i < OldSize; i++ )
{
//Copy over info from Array to TempArray
TempArray[i] = Array[i-1];
Array = TempArray;
Array[0] = _element;
}
}
}
T pop_back()
{
if( CurrentCount <= 0)
return null;
else
{
return Array[CurrentCount-1];
}
}
T pop_front()
{
if( CurrentCount <= 0)
return null;
else
{
return Array[0];
}
}
int size()
{
return CurrentCount;
}
@SuppressWarnings("unchecked")
void clear()
{
Size = 0;
CurrentCount = 0;
LastSpot = 0;
Array = (T[]) new Object[2];
}
@SuppressWarnings("unchecked")
void removeAt(int index)
{
T[] TempArray = (T[]) new Object[Size];
int ArrayIndex = 0;
for( int i = 0; i < CurrentCount; i++)
{
if( i == index )
continue;
TempArray[ArrayIndex] = Array[i];
ArrayIndex++;
}
}
void remove(T _element)
{
for(int i = 0; i < CurrentCount; i++)
{
//look for the element
if( Array[i] == _element)
removeAt(i);
}
}
}
提供されたヘルプに感謝します。または、私のコードが何らかの形で役に立った場合は、歓迎します