本文主要是介绍std::vector,std::deque,std…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文地址:std::vector,std::deque,std::list的区别的使用 作者:xpddk
vector deque list 使用: 它们的使用很相似, #include <vector> #include <deque> #include <list> 下面是一段代码: std::list<int> a; a.push_back(5);//从尾部插入数据 a.push_front(7);//从头部插入数据 std::list<int>::iterator p=a.begin();//得到头部数据指针,把iterator 当成指针比较容易理解 *p=10;//修改头部数据 int i=*p;//得到数据 a.pop_front();//释放第一个数据 注意点 1.当执行大数据量的调用push_back()的时候,记住要调用vector::reserve()。 2.如果你计划使用insert(),或者需要pop_front(),那就使用deque。 3.deque是大块大块地分配内存,每次插入固定数量的数据。vector是就近分配内存(这可能不是一个坏的事情)。但我们应该关注是,vector每次增加的内存足够大的时候,在当前的内存不够的情况。deque不需要capacity()和reserve()> 是非常有道理的。 4.*.vector内部分配的内存是永不释放的,即使你调用clear()也不会,这一点很不好,有误导性.有可能一个vector只在瞬间需要很大的容量,但大多数时间只需要很小的容量,结果却是长时间的占用了很大的,没有被使用到的内存.vector也没有提供函数来释放它内部的内存,不过有一个简单的办法,前几天在网上找到的: 5.*.deque就不一样了,deque永远不会占用太多冗余的内存,你只需要把它resize()到一个你希望的大小,它会自动释放掉那些被多余占用的内存 6.vector还有一个不好的地方,当你往一个vector里添加一个成员的时候,所有指向这个vector的原来成员的指针就不能保证有效了,因为 vector会re-alloc内存.而deque不会,无论从前面还是后面添加新成员,旧的成员都不会移动位置,这一点有时候很有用. |
这篇关于std::vector,std::deque,std…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!