数组与字符串一(概念和基础)

常见的结构有:数组、堆栈、队列、链表、树、图、堆、哈希表等等。 

本文主要是回顾下关于数组与字符串的相关知识,以便于以后使用:

数组,是常见的数据结构之一,用于存储一系列相同类型的数据。从底层实现上来看,“开辟一个数组”相当于系统为你提供了一段连续内存区间用于存储数据。数组名就是一个指针,在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语言中,字符串指的是一个以”\0”结尾的char数组。在C++中,String是一个类,并且可以通过调用类函数实现判断字符串长度等操作。

 

posted @ 2016-11-21 16:02  恨revenge  阅读(196)  评论(0编辑  收藏  举报