标签:
一、顺序容器概述:一个容器就是一些特定类型对象的集合
1、顺序容器类型:vector、deque、list、forward_list、array、string
2、除非有很好的理由选择其他容器,否则应使用vector
3、如果不确定应该使用哪种容器,则只使用vector和list公共的操作:使用迭代器,不使用下标操作
4、每个容器都定义在一个文件名与类型名相同的头文件中
二、顺序容器都支持的操作
1、为了创建一个容器来为另一个容器的拷贝,两个容器的类型以及其元素类型都必须匹配;但是,当以迭代器为参数拷贝一个范围是,不需要容器类型相同,元素类型也只要能转换就可以
2、如果元素类型是内置类型或具有默认构造函数的类类型,则可以只为构造函数提供一个容器大小的参数。如果没有默认构造函数,则除了大小参数外,还需要指定显示的元素初始值
3、swap(c1, c2):交换两个相同类型容器的内容,它只是交换了两个容器的内部数据结构(名字),所以很快
4、assign:仅顺序容器使用:把元素替换成assign中参数的值
5、容器元素的插入是拷贝
6、push_front:list、forward_list和deque支持
7、insert:vector、deque、list和string都支持,但是vector、deque和string会很耗时
8、c.back()、c.front()、c.at(n)、C[n]:访问元素,返回的都是引用
9、erase:返回指向被删除元素之后元素的迭代器
10、forward_list支持的操作
11、由于向迭代器添加或删除元素的代码会使迭代器失效,所以必须保证每次改变容器的操作之后要重新定位迭代器
三、容器适配器:stack、queue、priority_queue
1、默认情况下,stack和queue给予deque实现,priority_queue在vector上实现
猜测:deque只是保存了头结点的单链表,所以在中间插入值会很慢
标签:
原文地址:http://www.cnblogs.com/dylqt/p/4842628.html