一维
类的头文件:
#pragma once
#define _HEAP_VECTOR_
template<typename ValueType>
class Heap_Vector {
public:
Heap_Vector(size_t n = 32) :capacity(n), content_number(0), vec(new ValueType[n]) {}
~Heap_Vector() // destructor
{
delete[] vec; // free the dynamic array
}
// similar to the function of push_back in vector
void push_back(ValueType value)
{
if (content_number == capacity)
{
expand();
}
vec[content_number++] = value;
}
ValueType operator [](size_t index)
{
return vec[index];
}
size_t size()
{
return content_number;
}
private:
ValueType* vec;
size_t capacity;
size_t content_number;
void expand()
{
// 1. ask for new space for the array
ValueType* new_vec = new ValueType[2 * capacity];
// 2. copy the values over
for (size_t i = 0; i != content_number; i++)
new_vec[i] = vec[i];
// 3. delete the old array
delete[] vec;
// 4. point vec to new array
vec = new_vec;
// 5. update capacity (twice the capacity)
capacity *= 2;
}
};
// ALL RIGHTS RESERVED (C) 2020 Teddy van Jerry
一维动态数组的申请:
ValueType vec = new ValueType[n];
一维动态数组的释放:
delete[] vec;
一维动态数组的增长:(此处是将长度乘二)
void expand()
{
// 1. ask for new space for the array
ValueType* new_vec = new ValueType[2 * capacity];
// 2. copy the values over
for (size_t i = 0; i != content_number; i++)
new_vec[i] = vec[i];
// 3. delete the old array
delete[] vec;
// 4. point vec to new array
vec = new_vec;
// 5. update capacity (twice the capacity)
capacity *= 2;
}
二维
二维动态数组的申请:
int** bucket = new int* [radix_index]; // define a dynamic array of arrays
for (int i = 0; i != radix_index; i++)
bucket[i] = new int[vint.size()]; // define a dynamic array
(注意:radix_index
必须是const
)
二维动态数组的释放:
for (int i = 0; i != radix_index; i++)
delete[] bucket[i]; // free the dynamic arrays
运用实例
【SEU程序设计课笔记】 12 - 2020/11/19 - Write C++ programs - 排序
ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。