我正在尝试编写我自己的 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);
}
}
}
感谢您提供的任何帮助,或者如果我的代码以某种方式对您有所帮助,欢迎您