2020-02-27 C++提高编程06-基本框架

3.5 stack容器

3.5.1 特点:先进后出

3.5.2 stack常用接口

构造函数:

stack stk;//stack采用模板类实现

stack(const stack &stk);

赋值操作:

stack &operator=(const stack &stk);

数据存取:

push(elem);

pop();

top();//返回栈顶元素

大小操作:

empty();

size();

3.6 queue

3.6.1 特点:

先进先出 FIFO

一端进队 一端出队

只有队头队尾能被外界访问 因此不允许遍历行为

从队头出队 队尾入队

3.6.2 queue常用接口

构造函数:

queue que;//采用模板类实现

queue(const queue &que);

赋值操作:

queue &operator=(const queue &que);

数据存取:

push(elem);

pop();

back();//返回最后一个元素

front();//返回第一个元素

大小操作:

empty();

size();

3.6.3 list容器

3.7.1特点

优点:可以对任意位置进行快速插入删除操作

缺点:遍历速度慢 占用空间大

注意:list容器插入和删除操作都不会造成原有list迭代器失效,这在vector是不成立的

总结:list和vector最为常用 STL中为双向链表

3.7.2 list构造函数

函数原型:

1 list lst;

2 list(beg,end);

3 list(n,elem);

4 list(const list &lst);

3.7.3 list复制和交换

函数原型:

1 assign(beg,end);

2 assign(n,elem);

3 list &operator=(const list &lst);

4 swap(lst);

3.7.4 list大小操作

函数原型:

1 size();

2 empty();

3 resize(num);

4 resize(num,elem);

3.7.5 插入和删除

函数原型:

1  push_back(elem);

2  pop_back();

3  push_front();

4  pop_front();

5  insert(pos,elem);

6  insert(pos,n,elem);

7  insert(pos,beg,end);

8  clear();

9  erase(beg,end);

10 erase(pos)'

11 remove(elem);//删除容器中所有与elem值匹配的元素

3.7.6 list数据存取

函数原型:

front();

back();

注意:不可以用[] at 访问

原因:本质链表,不是用连续线性空间存储数据,迭代器也不支持随机访问

3.7.7 反转和排序

函数原型:

reverse();

sort();

3.7.8 案例-自定义类型排序

示例:

bool comparePerson(Person &p1, Person &p2)

{

//年龄相同 按身高降序

if (p1.m_Age == p2.m_Age)

return p1.m_Height > p2.m_Height;

//按照年龄升序 从小到大

return p1.m_Age < p2.m_Age;

}

l.sort(comparePerson);//自定义类型需要指定排序规则  仿函数

你可能感兴趣的:(2020-02-27 C++提高编程06-基本框架)