c++语言中,vector容器与list容器的区别和联系?
vector容器与list容器的区别和联系?还有什么情况下用vector好,什么情况下用list好?本人新手学习,答案尽量详细点,谢谢!!请尽量说最本质的区别,也可以举例...
vector容器与list容器的区别和联系?
还有什么情况下用vector好,什么情况下用list好?
本人新手学习,答案尽量详细点,谢谢!!
请尽量说最本质的区别,也可以举例说明,比如说用来管理网络游戏中的怪物,或者其他例子,越详细越好,请各位高手多多指教!!! 展开
还有什么情况下用vector好,什么情况下用list好?
本人新手学习,答案尽量详细点,谢谢!!
请尽量说最本质的区别,也可以举例说明,比如说用来管理网络游戏中的怪物,或者其他例子,越详细越好,请各位高手多多指教!!! 展开
展开全部
C++ STL 提供了3个序列容器 :vector, deque, list
vector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个capacity,如果元素个数超出capacity,那vector就会重新分配一个新的空间,并把旧值复制到新的空间中,释法原空间,这个也要耗费很多时间,所以如果你知道元素的最大值,最好用reserve()函数初始最大空间,避免重新分配空间造成的时间。
deque 几乎所有的操作都和vector一样,出了可以在头添加和删除,多了个push_front(), pop_front();
list 是双链表,元素在内存中是分散的不连续的,它使用指针left,right,指向前一个元素和后一个元素。所以要删除和添加只要动动指针,所以很快,但是因为是不连续的所以要访问一个元素,你只能遍历序列。
vector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个capacity,如果元素个数超出capacity,那vector就会重新分配一个新的空间,并把旧值复制到新的空间中,释法原空间,这个也要耗费很多时间,所以如果你知道元素的最大值,最好用reserve()函数初始最大空间,避免重新分配空间造成的时间。
deque 几乎所有的操作都和vector一样,出了可以在头添加和删除,多了个push_front(), pop_front();
list 是双链表,元素在内存中是分散的不连续的,它使用指针left,right,指向前一个元素和后一个元素。所以要删除和添加只要动动指针,所以很快,但是因为是不连续的所以要访问一个元素,你只能遍历序列。
展开全部
vector类似于数组,可以理解成无限长数组。 适合随机访问和从尾部增加、删除数据。
list可以随机访问, 并且从头部、尾部 插入删除数据都比较有效率。
所以用哪个看你的需求,如果vector 可以满足你的需求那么尽量用vector,因为它性能最好(跟使用数组一样)
list可以随机访问, 并且从头部、尾部 插入删除数据都比较有效率。
所以用哪个看你的需求,如果vector 可以满足你的需求那么尽量用vector,因为它性能最好(跟使用数组一样)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vector遍历较快,
list插入删除快
要经常修改数据的话用list,不经常修改,但经常访问用vector
list插入删除快
要经常修改数据的话用list,不经常修改,但经常访问用vector
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要常常进行插入删除,用list较好
建议参考《c++ primer中文版》,里面讲得很好
建议参考《c++ primer中文版》,里面讲得很好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询