main.cpp
#include<iostream>
#include<string.h>
#include"array.h"
using namespace std ;
int main(int argc, char *argv[])
{
array ob(4);
ob.push_array(1);
ob.push_array(2);
ob.push_array(2);
ob.push_array(2);
ob.push_array(2);
ob.push_array(2);
ob.pop_array();
ob.pop_array();
int num = ob.array_pos(2);
ob.print_array();
cout<<num<<endl;
return 0;
}
array.c
#include "array.h"
#include<string.h>
#include<iostream>
using namespace std;
array::array()
{
capacity = 5;
size = 0;
arr = new int[capacity];
//空间清0
memset(arr,0,sizeof(int)*capacity);
}
array::array(int capacity)
{
this->capacity = capacity;
size = 0;
arr = new int[capacity];
//空间清0
memset(arr,0,sizeof(int)*capacity);
}
array::array(const array &ob)
{
capacity = ob.capacity;
size = ob.size;
arr = new int[capacity];
memcpy(arr,ob.arr,sizeof(int)*capacity);
}
array::~array()//析构只要处理好成员指针指向就可以了
{
if(arr !=NULL)
{
delete []arr;
arr = NULL;
}
}
void array::print_array()
{
int i = 0;
for(i =0;i<size;i++)
{
cout<<"第"<<i<<"个元素是:"<<arr[i]<<endl;
}
return;
}
void array::push_array(int data)
{
if(size == capacity)
{
int *temp = new int[2*capacity];
memcpy(temp,arr,sizeof(int)*capacity);
delete []arr;
arr = temp;
arr[size] = data;
size++;
capacity = 2*capacity;
}
else
{
arr[size] = data;
size ++;
}
return;
}
void array::pop_array()
{
if(size == 0)
{
cout<<"数组空了"<<endl;
}
else
{
size--;
}
return;
}
int array::array_pos(int pos)
{
if((pos<0) ||(pos>size))
{
cout<<"你越界了!"<<endl;
exit(-1);
}
else
{
return arr[pos];
}
}
array.h
#ifndef ARRAY_H
#define ARRAY_H
class array
{
private:
int size;
int capacity;
int *arr;
public:
array();
array(int capacity);
array(const array &ob);
~array();
void print_array();
void push_array(int data);
void pop_array();
int array_pos(int pos);
};
#endif // ARRAY_H