1.数组
数组的内存是连续的,所以可以直接地访问我们要查找的0(n),具有很好的时间效率。
2.vector
为了解决数组空间效率不高的问题,我们使用动态数组,当往数组中添加数组空间不足时,我们使用一块更大的空间,是之前的两倍,将之前的数据复制过来,然后将原来的数组释放掉,这样会造成性能上的影响,所以要尽量减少改变数组大小的次数。
3.字符串
C++中我们在字符串的末尾添加一个‘\0’字符。
为了节省空间,我们把字符串放在一个单独的空间中,如果我们使用多个指针赋值同一个字符常量,那么它们实际上会指向相同的地址内存,而如果是多个数组赋值同一个字符常量将会不同。
4.链表
链表是一种动态的数据结构,我们在创建链表时,无需知道链表的数据长度,可以随时添加。链表由节点组合而成,结构多样,使用方便,例如环形链表,双向链表还有复杂链表。
5.树
树是一种特殊的结构,根节点没有父节点,叶节点没有子节点,最常用的是二叉树,通常用于遍历,如前序遍历,中序遍历,后序遍历,即根左右,左跟右,左右根的方式遍历。
而每种遍历都有递归和循环两种不同的实现方式。特例有堆,二叉搜索树和红黑树等。
6.栈和队列
栈是一种先进后出的结构,队列是一种先进先出的结构,可以使用两个栈来实现队列,也可以使用两个队列来实现栈,两者看似相反而又联系密切。