数组操作(二)
.h
#pragma once #include <iostream> class operate_array { public: operate_array(int size); operate_array(int size, int value); ~operate_array(); private: int *m_pArray; int m_isize; int m_icapacity; public: void insert_element(int element, int index); void change_element(int element, int index); int get_element(int index); int *get_head(); int length(); int capacity(); int recapacity(); int delete_element(int index); void output_array(); };
.cpp
#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(int capacity, int value) { this->m_pArray = new int[capacity]; this->m_icapacity = capacity; this->m_isize = capacity; for (int i = 0; i >= this->m_isize; i++) { this->m_pArray[i] = value; } } 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++; } void operate_array::change_element(int element, int index) { if (index < 0 || index > m_isize) { cout << "change position error." << endl; return; } m_pArray[index] = element; return; } int operate_array::get_element(int index) { if (index < 0 || index > m_isize) { cout << "get position error." << endl; return -1; } return m_pArray[index]; } int *operate_array::get_head() { return this->m_pArray; } int operate_array::length() { return this->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] << " "; } }

浙公网安备 33010602011771号