ArrayList implementation C++

ArrayList implementation C++

本文关键字:C++ implementation ArrayList      更新时间:2023-10-16

我需要为大学写一个IntArray实现。我想知道我的代码是否可以更好。它是否有效。头文件中列出了我们需要编写的方法。由于

头文件:

 #ifndef INTARRAY_H_
 #define INTARRAY_H_
 #include <iostream>
 using namespace std;
 class IntArray{
 private:
     int length;
     int * data;
public:
    IntArray(int size = 0);
    IntArray(const IntArray& other);
    IntArray& operator=(const IntArray& original);
    int getSize() const { return length; };
    int& operator[](unsigned int i);
    void resize(unsigned int size);
    void insertBefore(int value, int index);
    friend ostream& operator<<(ostream& out, const IntArray& list);
    ~IntArray(){ delete[] data; };
 };
 #endif

Cpp文件:

 #include "IntArray.h"
 IntArray::IntArray(int size){
     length = size;
     data = new int[size];
     for(int i=0; i<size; i++){
         data[i] = 0;
     }
 }
 IntArray::IntArray(const IntArray& other){
     length = other.length;
     data = new int[length];
     for(int i=0; i<length; i++){
         data[i] = other.data[i];
     }
 }
IntArray& IntArray::operator =(const IntArray& other){
if(this = &other){
    return *this;
}
length = other.length;
data = new int[length];
for(int i = 0; i <length;i++){
    data[i] = other[i];
}
return *this;
}
 int& IntArray::operator[](unsigned int i){
      if(i>=this->length) throw "Index out of bounds";
      return data[i];
 }
 ostream& operator<<(ostream& out, const IntArray& list){
      for(int i=0; i<list.getSize(); i++){
         out << list.data[i] << " ";
      }
     return out;
 }
 void IntArray::resize(unsigned size){
     if (size <= length){
        length = size;
        return;
     }
     int * temparr = new int[size];
     // copy data
     for (unsigned int i = 0; i < length; ++i){
        temparr[i] = data[i];
     }
     delete [] data; 
     data = temparr; 
     length = size; 
 }
 void IntArray::insertBefore(int value, int index){
     resize(length+1);
     for(int i=length-1; i>index; i--){
          data[i] = data[i-1];
     }
     data[index] = value;
  }

添加next方法将使您的容器更方便使用:

void pushFront(int value);
int popFront();
void pushBack(int value);
int popBack();
void clearAll();

同样,使用迭代器使容器更高效。c++中的迭代器设计模式