前几天,支付宝的人对我进行了电话面试,问到了STL中的一些问题,由于我好久没有看STL,因此写下来方便记忆,如果
认为写得不好的多多指教。
Vector:vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。对其进行增加,
删除跟正常的顺序表没有什么区别,因此需要移动后面的数据,时间复杂度为O(n),随机访问的时间复杂度是O(1)。
List:List将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢,负责度为O(n)。
Map:pair组成的红黑树;insert() O(logn);erase() O(logn);find() O(logn) 找不到返回a.end()
Set:内部实现: 红黑树 //Red-Black Tree,一种平衡的二叉排序树//又是一个Compare函数,类似于qsort函数里的那个Compare函数,作为红黑树在内部实现的比较方式
insert() O(logn);erase() O(logn);find() O(logn)