数组操作

头文件

#pragma once
#include <iostream>

class operate_array
{
public:
    operate_array(int size);
    ~operate_array();

private:
    int *m_pArray;
    int m_isize;
    int m_icapacity;

public:
    void insert_element(int element, int index);
    int capacity();
    int recapacity();
    int delete_element(int index);
    void output_array();

};

实现

#include "pch.h"
#include <iostream>
using namespace std;
#include "operate_array.h"


operate_array::operate_array(int capacity)
{
    this->m_pArray = new int[capacity];
    this->m_icapacity = capacity;
    this->m_isize = 0;
}


operate_array::~operate_array()
{
    delete[]m_pArray;
    m_pArray = NULL;
}

void operate_array::insert_element(int element, int index)
{
    if (index < 0 || index > m_isize)
    {
        cout << "insert position error." << endl;
        return;
    }
    if (m_isize >= m_icapacity)
    {
        recapacity();
    }
    for (int i = m_isize - 1; i >= index; i--)
    {
        m_pArray[i + 1] = m_pArray[i];
    }
    m_pArray[index] = element;
    m_isize++;
}

int operate_array::capacity()
{
    return this->m_icapacity;
}

int operate_array::recapacity()
{
    //recapacity 后,数组的地址发生了改变
    int icapacity = (this->m_icapacity) * 2;
    int *pNew_Array = new int[icapacity];
    memcpy(pNew_Array, m_pArray, sizeof(m_pArray) * icapacity);
    delete []m_pArray;
    m_pArray = NULL;
    m_pArray = pNew_Array;
    m_icapacity = icapacity;
    return m_icapacity;
}

int operate_array::delete_element(int index)
{
    if (index < 0 || index >= m_isize)
    {
        cout << "delete position error." << endl;
        return -1;
    }
    int element = m_pArray[index];
    for (int i = index; i < m_isize - 1; i++)
    {
        m_pArray[i] = m_pArray[i + 1];
    }
    m_isize--;
    return element;
}

void operate_array::output_array()
{
    for (int i = 0; i < m_isize; i++)
    {
        cout << m_pArray[i] << " ";
    }
}

 

posted @ 2020-05-07 11:26  N_zero  阅读(125)  评论(0)    收藏  举报