C++顺序容器

一、顺序容器类型

顺序容器:vector、list、deque

适配器:stack、queue、priority_queue

使用这些容器都必须使用相应的头文件


二、容器元素初始化

C<T>  c;   创建一个名为c的空容器

C<T>  c(c2); 创建容器c2的副本

C<T>  c(b,e); 创建c,其元素是迭代器b和e的范围内的副本,区间为前闭后开。

C<T>  c(n,t);  创建n个值为t的元素创建c。只适用于顺序容器

C<T> c(n) ; 创建有n个初始化元素的容器c。只适用于顺序容器


三、容器内元素的类型约束

1、元素类型对象必须支持赋值运算。

2、元素类型对象必须可以复制。

因此引用类型和IO库类型不能为容器的元素。


四、迭代器范围

一般为左闭右开区间


五、容器定义的类型别名

size_type:无符号整形。

iterator: 此容器的迭代器类型

const_iterator:元素的只读迭代器类型

reverse_iterator:按逆序寻址的迭代器,逆序迭代器做++操作将指向容器的前一个元素

const_reverse_iterator:只读逆序迭代器

value_type:元素类型


六、begin和end成员

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

c.end() 返回迭代器,指向最后一个元素的下一个位置

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

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


七、顺序容器中添加元素

c.push_back(t):容器尾部插入一个元素。适合所有顺序容器。

c.push_front(t): 容器前段添加元素。只适合list和deque类型

c.insert(p,t); 在迭代器p所指向元素之前插入元素t,返回新元素的迭代器。

c.insert(p,n,t);在迭代器p所指向元素之前插入n个t,返回void。

c.insert(p,b,e); 在迭代器p之前插入由迭代器b和e标记的范围内元素,返回void。


注意:容器元素都是副本


八、关系操作

1、如果两个容器具有相同的长度且所有元素都相等,那么这两个容器就相等

2、如果两个容器的长度不同,但较短的容器中所有元素都等于较长容器中对应的元素,则较短的容器小于另一个元素。

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


九、容器大小的操作

c.size()  返回c中元素的个数

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

c.empty() 判断容器是否为空

c.resize(n)  调整容器c的长度大小,使其能容纳n个元素

c.resize(n,t) 调整容器c的大小为n,并初始化为t


十、元素访问

c.back() 返回容器的最有一个元素的引用

c.front() 返回容器c的第一个元素的引用

c[n] 返回下标为n的元素的值。只适用于vector和deque

c.at(n) 返回下标为n的元素的值。只适用于vector和deque


十一、删除元素

c.erase(p) 删除p所指向的元素,返回指向其下一个元素的迭代器

c.erase(b,e) 删除迭代器b,e之间的元素,返回e的下一个迭代器。

c.clear() 删除c内所有元素

c.pop_back() 删除c的最后一个元素,返回void。

c.pop_front() 删除c的第一个元素,返回void。只适用于list和deque。


十二、赋值和swap

c1 = c2 ; 删除c1的所有元素,然后将c2的元素复制给c1.

c1.swap(c2); 交换内容,c1中存放的是c2的内容,c2存放的是c1的内容

c.assign(b,e) 重新设置c的元素,将迭代器b和e所标记的所有元素复制到c中,b和e必须不是指向c中元素的迭代器

c.assign(n,t) 将容器c重新设置为存储n个值为t的元素。


十三、适配器

栈适配器

s.empty()

s.size()

s.pop() 删除栈顶元素,但不返回其值

s.top() 返回栈顶的元素值

s,push(item)


队列适配器和优先级队列适配器

q.empty()

q.size()

q.pop()  删除对首元素

  q.front()  返回队首元素,只适用于队列

q.back() 返回队尾元素,只适用于队列

q.top()  返回具有最高优先级的元素值,但不删除该元素,只适应于优先级队列

q.push(item)  对于queue,在队尾压入一个新元素

对于priority_queue,在基于优先级的适当位置插入新元素。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值