第十二章队列模拟注意事项

简介: 第十二章队列模拟注意事项

1.将队列数组视为循环则可以避免移动首元素就改变后面元素的位置,采用链表就可以很好的满足队列的要求。

  struct Node
  {
    Item item;
    struct Node * next;
  };

这个是结点的结构体。

2.在类中嵌套结构体,类,或枚举,其作用域尾整个类,声明不会创建对象。

class Queue
{
private:
  struct Node
  {
    Item item;
    struct Node * next;
  };
  .........

3.对于类私有元素为const类型的时候,可以对变量初始化但是不能对其赋值。这个时候调用构造函数对类数据对象进行初始化的时候就不能在代码块里面进行赋值,而只能采用初始化列表的方式去初始化。

class Queue
{
private:
  struct Node
  {
    Item item;
    struct Node * next;
  };
  enum { Q_SIZE = 10 };
  Node *front;
  Node *rear;
  int items;
  const int qsize;
  Queue(const Queue &q):qsize(0) {}
  Queue & operator =(const Queue &q) { return *this; }
public:

对于上述初始化列表方式,在类方法中只能用于构造函数。必须使用这种语法的有const类成员和被声明为引用的类成员。这是因为引用与const数据类似,只能在被创建的时候进行初始化。对于本身就是类对象的成员来说,使用成员初始化列表效率更高。

注意;不能将成员初始化列表语法用于构造函数之外的其他类方法。

4.为什么加显示析构函数,是因为删除结点并不能保证在运行完程序后队列为空,所有必须加显示析构函数运算符。

5.为什么将显示复制构造函数和重载赋值运算符函数权限设置为私有,是因为规定这个类不能进行拷贝和赋值运算,也不会提供默认复制构造函数。这种方法被称为伪私有方法。


目录
相关文章
|
6月前
|
Java
java线程之定制化通信(多轮顺序打印问题)
java线程之定制化通信(多轮顺序打印问题)
|
7月前
第六章 利用数组处理批量数据
第六章 利用数组处理批量数据
37 0
|
7月前
用R语言模拟M / M / 1随机服务排队系统
用R语言模拟M / M / 1随机服务排队系统
|
7月前
|
编译器 C++
【C++】string类模拟实现过程中值得注意的点
【C++】string类模拟实现过程中值得注意的点
72 0
|
计算机视觉
队列的概念及结构(内有成型代码可供CV工程师参考)
队列的概念及结构(内有成型代码可供CV工程师参考)
77 0
|
前端开发 NoSQL Redis
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
125 0
|
存储
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
66 0
|
存储 Linux C语言
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
|
存储 Java 索引
不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列
不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列
147 0
不可上位!数据结构队列,老实排队,Java实现数组模拟队列及可复用环形队列
|
存储
数组模拟队列之深度解析
数组模拟队列之深度解析
113 0
数组模拟队列之深度解析