@zhengyuhong
2015-06-09T09:47:26.000000Z
字数 790
阅读 1088
C++11 STL
前向链表是用单链表实现的,可在常量时间内在链表中做插入或删除操作list比之forward_list,双向链表要消耗额外的空间存储每个元素和在插入和删除元素时一个轻微的更高的时间开销,所以forward_list更有效率,虽然只能向前遍历。
forward_list是唯一的标准容器中故意不给出size()成员函数的,这样是为了更高效而考虑,可以用distance(c.begin(),c.end())来得到forward_list的大小,这将消耗一个线性时间,而如果同list一样实现size()成员函数的话,那样要消耗一些额外的存储空间[用于链表中的内部计数得出size()和使得插入和删除元素时有一个轻微的效率降低,实现size()要消耗一个常量的时间
explicit forward_list (const allocator_type& alloc = allocator_type());explicit forward_list (size_type n);explicit forward_list (size_type n, const value_type& val,const allocator_type& alloc = allocator_type());template <class InputIterator>forward_list (InputIterator first, InputIterator last,const allocator_type& alloc = allocator_type());forward_list (initializer_list<value_type> il,const allocator_type& alloc = allocator_type());
