Lists

来源:互联网 发布:淘宝店铺托管协议 编辑:程序博客网 时间:2024/05/22 12:36

Lists使用一个doubly linded list(双向链表)来管理元素,决定了list的内部结构和vector与deque迥然不同,所以先在几个主要方面与前述二者存在明显的区别。

  • 根据链表的性质,list不支持随机存取,意思是如果你想存取第i位置上的元素就必须顺着链表访问到i位置。

  • 任何位置上的插入删除操作都能在常数时间内完成,毕竟无需移动任何元素只通过内部的一些指针操作即可。

  • 安插和删除动作不会导致指向其他各元素的各个pointers、references、iterators失效。

  • list对于异常有这样的处理方式:要么成功,要么什么都不发生。

  • 由于不支持随机存取,list即不提供下标操作符也不提供at()
  • list并未提供容量capacity()、空间重新分配reverse()等操作函数,因为全无必要。每个元素都有自己的内存,在被删除之间一直有效。
  • list提供了不好特殊的成员函数,专门用于移动元素。较之同名的STL通用算法, 这些函数执行起来更快,因为无需拷贝和移动,只需调整若干指针即可。
0 0