C++ arraylist实现

#include <iostream>


using namespace std;

class DynamicArray {

public:
	DynamicArray();
	DynamicArray(int initSize);
	DynamicArray(const DynamicArray &original);
	~DynamicArray();

	void insert(int position, int value); 
	int get(int position);  

	int getSize();
	void resize(int newSize);

	int &operator[](int index);
	bool operator==(DynamicArray);
	bool operator!=(DynamicArray);

private:
	int size;  
	int *array;

};

DynamicArray::DynamicArray() {
	DynamicArray::DynamicArray(5);
}

DynamicArray::DynamicArray(int initSize) {
	size = initSize;
	array = new int[size];
	for (int i = 0; i < size; i++) {
		array[i] = 0; // Fill with zeroes
	}
}

DynamicArray::DynamicArray(const DynamicArray &original) {
	size  = original.size;
	array = new int[size];
	for (int i = 0; i < size; i++) {
		array[i] = original.array[i];
	}
}

DynamicArray::~DynamicArray() {
	delete[] array;
}


void DynamicArray::insert(int position, int value) {
	array[position] = value;
}

int DynamicArray::get(int position) {
	return array[position];
}

int DynamicArray::getSize() {
	return size;
}

void DynamicArray::resize(int newSize) {
	int *temp;
	temp = new int[newSize];
	for (int i = 0; i < (newSize); i++) {
		temp[i] = array[i];
	}
	delete[] array;
	array = temp;
	size = newSize;
}

bool DynamicArray::operator==(DynamicArray a)  {
	if (a.size != size) return false;

	for (int i = 0; i < (a.size); i++) {
		if (a[i] != array[i]) return false;
	}
}

bool DynamicArray::operator!=(DynamicArray a)  {
	if (a.size != size) return true;

	for (int i = 0; i < (a.size); i++) {
		if (a[i] != array[i]) return true;
	}
}

int &DynamicArray::operator[](int index) {
	if ((index - 1) > size) {
		resize(index + 1);
	}
	return array[index]; // returned as a reference
}



int main(int argc, char **argv) {
	cout << "Dynamic array..." << endl;

	DynamicArray array = DynamicArray(4);
	array.insert(1, 7);
	array.insert(3, 2);
	array[2] = 4;
	array[10] = 4;
	cout << "Pole naplněno." << endl;

	DynamicArray array2 = DynamicArray(array);
	if (array == array2) {
		cout << "Kopírovací konstruktor a porovnávání funguje." << endl;
	}

	array[1] = 9999111;
	if (array != array2) {
		cout << "Pole jsou správně považována za nestejná." << endl;
	}

	system("pause");
	return 0;
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值