#include <string>
class MyArray
{
public:
MyArray(unsigned int len = 10)
{
_len = len;
_data = new int[_len];
_index = 0;
}
~MyArray()
{
if (_data)
delete[] _data;
}
int GetData(const std::size_t index) const
{
if (_len > index)
return _data[index];
return 0;
}
void SetData(const std::size_t index, const int num)
{
if (_len > index)
_data[index] = num;
}
unsigned int GetLength() const
{
return _index;
}
void AddData(const int num)
{
if (_index >= _len)
{
_len = _index * 2; // 每次分配_index*2的空
int *temp = new int[_len];
memcpy(temp, _data, _index * sizeof(int));
delete[] _data;
_data = temp;
}
_data[_index++] = num;
}
void AddData(const MyArray &data)
{
for (unsigned int i = 0; i < data._index; ++i)
{
AddData(data.GetData(i));
}
}
void AddData(const int *data, const unsigned int len)
{
for (unsigned int i = 0; i < len; ++i)
{
AddData(data[i]);
}
}
void Push(const int num)
{
AddData(num);
}
void Push(const char c)
{
AddData(c);
}
void Push(const float f)
{
AddData(static_cast<int>(f));
}
void Push(const double d)
{
AddData(static_cast<int>(d));
}
void Push(const char *str)
{
if (str)
AddData(atoi(str));
}
void Insert(const int num, const unsigned int index)
{
if (_index >= _len)
{
_len = _index * 2;
int *temp = new int[_len];
for (unsigned int i = 0; i < index; ++i)
{
temp[i] = _data[i];
}
temp[index] = num;
for (unsigned int i = index + 1; i < _index + 1; ++i)
{
temp[i] = _data[i - 1];
}
delete[] _data;
_data = temp;
}
else
{
for (unsigned int i = _index + 1; i > index; --i)
{
_data[i] = _data[i - 1];
}
_data[index] = num;
}
}
void Insert(const char c, const unsigned int index)
{
Insert(c, index);
}
void Insert(const float f, const unsigned int index)
{
Insert(static_cast<int>(f), index);
}
void Insert(const double d, const unsigned int index)
{
Insert(static_cast<int>(d), index);
}
void Insert(const char *str, const unsigned int index)
{
if (str)
Insert(atoi(str), index);
}
private:
int *_data;
unsigned int _len;
unsigned int _index;
};
int main()
{
MyArray array;
array.AddData(1);
array.AddData(1);
array.Push("123");
array.Push(123.23);
return 0;
}
第三课--之二--类和对象作业--实现一个int型的Array类
最新推荐文章于 2023-03-31 20:51:16 发布