STL全称Standard Template Library,就是标准模板库,意思就是一群非常牛批的人实现的各种算法,数据结构的库被当成标准模板给你直接使用,他位于std这个namespace中 ,我们这里还要介绍一个东西叫做迭代器(iterator),迭代器是一个数据类型,其可以表示容器内所有元素的值,也支持做自增等操作,相当于容器和操作容器算法之间的中介1,这个容器也是非常抽象的std数据结构对象,假如我们要迭代每一个数据结构就需要实现不同的数据类型进行迭代,但是有了迭代器就不用了
List这里的list其实就是双向循环链表和vector不一样,vector是一串连续的地址空间,而List不是连续的地址空间,具体不再细说,注意向List push元素,这些元素存在stack中,假如我们的push操作在函数中,退出函数啥也没了…看代码
#include#include #include
using namespace std; void show_list(list list1){ list ::iterator it; //创建一个迭代器,,迭代器是一个抽象变量,用其表示容器内任意已一个元素 cout << "show list is" << endl; for( it = list1.begin(); it != list1.end(); it++){ cout << *it << endl; } } int main() { list list1; //构建一个list for ( int i = 0 ; i < num; i++){ list1.push_front(i *2); //向容器内传入元素 } show_list(list1); return 0; }
关于容器的函数有非常多,比如
XXX.push_back()
XXX.push_front()
XXX.pop_back()
XXX.pop_front()
XXX.back()返回尾元素
XXX.front()返回头元素
XXX.begin()以迭代器遍历的形式返回头节点
XXX.end()以迭代器遍历的形式返回尾节点
XXX.size()
hash表都知道是啥,我们不介绍其细节,但是std中有一个hash对象,这个hash对象只是提供hash函数,做存储的hash表还是用map类型
我们先创建一个hash表对象
std::map::iterator> LRUInstance_map;
看我们结合list和map实现map直接定位到list中的某个节点(要知道list是双向循环链表),其时间复杂度为O(1)
#include#include
引用1 ↩︎



