蓝桥杯一般stl学vector可以不学deque嘛?感觉没那么多精力了!
都差不多的东西,学会vector,deque也就差不多学会了,两者的方法基本一样,注意各自的特点就可以了。
deque 容器和 vecotr 容器有很多相似之处,比如:
deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。
deque 容器也可以根据需要修改自身的容量和大小。
和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。
当需要向序列两端频繁的添加或删除元素时,应首选 deque 容器。
参加比赛其实还是建议你不要纠结于stl,应该更加偏向于使用C语言,使用原始的数组和指针去操作,至于stl会用就行了,stl的几个容器用法其实都差不多了,只是说底层实现有区别而已,就比如链表本来是不支持随机访问,但我们仍然可以实现它的下标运算符,使得我们可以用[]访问list中的元素,此时他的用法表面上不就和vector一样了嘛,再比如让你写个链表反转,你直接调用stl的list?显然不是很合理,stl在算法中的存在是方便你实现更为复杂的算法时,可以不用关注一些小算法(如排序、查找),而是锻炼你的解决问题能力。建议你应该更注重算法的思维,和解决问题的方法,锻炼自己把现实问题转化为计算机识别的模型的思维。
另外,vector你都学了,deque那还有什么学的,就那么几个接口,看一下就会了。只是说用到后面,你需要根据场景有选择性的去用stl中的容器,以此来提高程序的效率或者节约内存。