关于STL容器的简单总结】的更多相关文章

VectorTest.cpp #include <vector> #include <iostream> #include <string> #include <algorithm> #include <iterator> #include "VectorTest.h" using namespace std; void VectorTest::simpleOperation() { // create empty vecto…
今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector<struct> mFriendList;...std::vector<struct>::iterator iter = mFriendList.begin();for ( ; iter != mFriendList.end(); ++iter){    if (...)        mFr…
最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用. 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器: 这里说的STL容器,但主要则是指容器,字符串类,但其实可以推广到在STL中提供的任何类型,这里说的公共接口,是指需要暴露给客户的sdk头文件,包括函数签名,或者类成员变量:也可以说,不要在暴露给客户的头文件中包含STL的头文件. 原因分析为什么有这个结论,我们可以从几个方面来论述: 客户端使用的STL版本可能不同因为STL作为标准库…
一.问题的引出: 容器可以存放对象,可以存放指针,这里要谈的是两者的使用问题.就是什么时候存放对象更好,什么时候存放指针更好? 二.问题的分析过程: 1. 首先说下stl容器的工作方式   对于内建类型(int float char等),容器的工作方式是纯粹的位拷贝,这里没有什么需要多说的. 对于自定义的对象,容器容纳了对象(比如通过insert或push_back等),但容器中存放的对象不是你给它们的那个对象,因为两个对象在内存中的位置不一样.此外,当你从容器中获取一个对象时,你所得到的对象不…
C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问   2.list            底层数据结构为双向链表,支持快速增删   3.deque       底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] --> [堆2] -->[堆3] --> ... 每…
STL中最简单也是最有用的容器之一是vector<T>类模板,称为向量容器,是序列类型容器中的一种. 1.vector<T> 对象的基本用法(1)声明:vector<type>  v;    //容量为0构造v对象,指定元素类型为typevector<type>  v(n);    //元素为n构造v对象,指定元素类型为type, vector<type>  v(n, initValue);    //元素为n构造v对象,指定元素类型为type,…
所有容器提供的都是“value语意”而非“reference语意”.容器内进行元素的安插操作时,内部实施的是拷贝操作,置于容器内.因此STL容器 的每一个元素都必须能够拷贝.---<<C++标准程序库>> 侯捷.孟岩译 p144页原文 以vector为例,往Vector中(实际上所有STL容器都是这样)放元素,Vector会调用元素类的拷贝构造函数生成的副本,当 Vector走出生存期时(),会自动调用其中每个元素的析构函数.比如,如果 vector<myclass>…
STL 容器的概念 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 经典的数据结构数量有限,但是我们常常重复着一些为了实现向量.链表等结构而编写的代码,这些代码都十分相似,只是为了适应不同数据的变化而在 细节上有所出入.STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对 最常用的数据结构提供了支持,这些模板的参数允许我们…
1.vector 容器 vector 的数据安排以及操作方式,与 array 非常相似.两者的唯一区别在于空间的运用的灵活性.array 是静态空间,一旦配置了就不能改变,vector 是动态数组.在堆上分配空间.vector 是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素(有保留内存,如果减少大小后内存也不会释放.如果新值>当前大小时才会再分配内存,这大大影响了 vector 的效率,).因此,vector 的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因…
http://www.cppblog.com/beautykingdom/archive/2008/07/09/55760.aspx?opt=admin 在STL(标准模板库)中经常会碰到要删除容器中部分元素的情况,本人在编程中就经常编写这方面的代码,在编码和测试过程中发现在STL中删除容器有很多陷阱,网上也有不少网友提到如何在STL中安全删除元素这些问题.本文将讨论编程过程中最经常使用的两个序列式容器vector.list中安全删除元素的方法和应该注意的问题,       其它如queue.s…