常见的结构有:数组、堆栈、队列、链表、树、图、堆、哈希表等等。
本文主要是回顾下关于数组与字符串的相关知识,以便于以后使用:
数组,是常见的数据结构之一,用于存储一系列相同类型的数据。从底层实现上来看,“开辟一个数组”相当于系统为你提供了一段连续内存区间用于存储数据。数组名就是一个指针,在C++中,主要有两种创建方法:
数组
//在栈上定义长度为arraysize的整型数组
int array[arraysize];
//在堆上定义长度为arraysize的整型数组
int *array = new int[arraysize];
delete[] array;//使用完后要删除
//二维数组存储一个矩阵
//在栈上创建
int array[M][N];
//传递给子函数
void func(int arr[M][N]){
}
//在堆上创建
int **array = new int *[M];
for (i = 0; i < M; i++)
array[i] = new int[N];
//传递给子函数
void func(int **arr, int M, int N){
}
//使用完后需要释放内存
for (int i = 0; i < M; i++)
delete[] array[i];
delete[] array;
数组可以通过下标随机访问元素,所以在修改、读取某个元素的时候效率很高,复杂度为O(1),在插入和删除某个元素的时候,需要移动前后的元素,所以平均复杂度为O(n)。
哈希表、字符串
哈希表,主要用于基于”键“的查找,储存的基本元素是键-值对。在逻辑上,数组可以作为哈希表的一个特例:键是一个非负整数。一般默认,键相同,基本储存元素相同。
哈希表的本质是当一个使用者提供一个键,根据哈希表自身定义的哈希函数(Hash Function),映射出一个下标,根据这个下标决定需要把当前的元素存储在什么位置。
在C语言中,字符串指的是一个以” ”结尾的char数组。在C++中,String是一个类,并且可以通过调用类函数实现判断字符串长度等操作。