您的位置:首页 > 其它

第二部分——第九章/顺序容器

2012-07-10 19:29 232 查看
1:三种顺序容器 vector list deque(双端队列)

及对应适配器 stack queue priority_queue

初始化除了有默认构造函数外,还有其他容器构造函数,如:C<T> c(c2)复制构造函数 C<T> c(b,e)创建c,其元素是迭代器b和e标本的范围内元素的副本,

C<T> c(n, t)用n个值为t的元素创建容器c C<T> c(n)创建有n个值初始化

2:大多数类型都可作为容器的元素类型,但有两个限制

1) 必须支持赋值运算

2) 该类型对象必须可以复制

例子:引用不支持一般意义的赋值运算;IO库类型不支持赋值和复制,因此也不能创建存放IO类型对象的容器

而容器元素可以是容器类型,但需注意,必须使用空格 vector< vector<string> > lines; 否则>>被当成是移位符

3:通过迭代器访问容器中的元素

只有vector和deque容器提供两种重要的运算集合:迭代器算术运算和除了==以及!=之外的关系操作符对两个迭代器进行比较

迭代器范围,是一个左闭合区间 [beg, end),当beg和end相等时,迭代器范围为空;当不相等时,则迭代器范围内至少有一个元素,beg指向该区间中的第一个元素,并通过若干次自增运算可以使beg值不断增大,直到beg==end为止

使迭代器失效的容器操作:erase()函数,删除容器中的某个元素,任何指向已删除元素的迭代器都具有无效值

4:容器定义的类型别名

1) size_type 无符号整型,足以存储此容器类型的最大可能容器长度

2) iterator 此容器的迭代器类型

3) const_iterator

4) reverse_iterator 按逆序寻址元素的迭代器

5) difference_type 有符号整型

6) value_type 元素类型

5:begin和end成员

1) c.begin() 返回一个迭代器,指向容器c的第一个元素

2) c.end() 指向c最后一个元素的下一位置

3) c.rbegin() 指向第一个元素的前一个位置

4) c.rend() 指向最后一个元素

6:添加元素的操作

1) c.push_back(t)

2) c.push_front(t)

3) c.insert(p, t) 在迭代器p所指向的元素前面插入值为t的新元素,返回新添加元素的迭代器

4) c.insert(p, n, t) -------------------------------------------n个值为t的新元素,返回void类型

5) c.insert(p, b, e)

7:两个容器的比较,容器必须具有相同的容器类型

1) 具有相同的长度并且对应位置的元素相等,则两容器相等

2) 长度不相同,且较短者所有元素都等于较长者对应元素的值,则较短者小于较长者

3) 两容器都不是对方的初始子序列,则它们的比较结果取决于所比较的第一个不相等的元素

8:容器大小操作

1) c.size() 返回元素个数,类型为size_type

2) c.max_size() 返回可容纳的最多元素个数

3) c.empty()

4) c.resize(n)

5) c.resize(n, t)

9:访问元素

1) c
只适用于vector和deque容器

2) c.at(n) 只适用于vector和deque容器

3) *iter 通用

10:删除元素

1) c.erase(p)

2) c.erase(b, e)

3) c.clear()

4) c.pop_back()

5) c.pop_front() 只适用于list或deque

11:赋值与swap

1) c1.swap(c2) 两容器交换内容

2) c.assign(b, e) b和e必须不是c的迭代器

3) c.assign(n, t)

12:vector容器的元素是以连续的方式存放,所以添加一个元素,当容器中已经没有空间容纳新的元素,则必须重新分配存储空间,存放在旧存储空间的必须复制到新存储空间中,若每次都要这么分配,则性能非常慢;list是链表存储,则不存在这样的问题

然而,大部分应用中,vector容器都是最好的,vector容器预留了额外的存储区,访问元素的便利弥补了存储代价;capacity() 返回容器在必须分配新存储空间之前可以存储的元素总数

13:只适用于string类型的操作

1) substr(pos, n) 函数 检索需要的子串

2) append() 在字符串末尾添加字符

3) replace() 替换字符串中的内容

14:string类型的查找操作

1) find(args) 查找args的第一次出现

2) rfind(args) ---------------最后一次出现

3) find_first_of(args) 查找args的任意字符的第一次出现

4) find_last_of(args)

5) find_first_not_of(args)

6) find_last_not_of(args)

15:string类型的比较 compare()函数,不同的重载函数;也可以和C风格字符串进行比较

16:容器适配器、迭代器适配器、函数适配器

适配器:使一事物的行为类似于另一事物的行为的一种机制

stack栈可以建立在vector/list/deque容器上;queue适配器要求其关联的基础容器必须提供push_front运算,因此只能建立在list容器上;priority_queue适配器要求提供随机访问功能,因此可建立在vector和deque容器上,不能建立在list上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: