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…
最新推荐文章于 2024-05-13 09:58:43 发布