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

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

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


目录
相关文章
|
16天前
|
算法 BI C++
[第四章]枚举与模拟
[第四章]枚举与模拟
36 1
|
11月前
|
存储
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
47 0
|
11月前
|
开发工具
游戏开发实战教程(5):重复执行和逻辑循环的区别
将循环分为重复执行和逻辑循环,应该是微信小游戏开发工具中所特有的。因为之前做游戏,无论是使用哪种工具或者哪种编程语言,对于循环来说,都只有一种,不会存在歧义或者误用。但是这里将循环分为了两种,如果误用的话会导致出现一些奇怪的问题。所以需要单独拿出来区分一下,避免掉进这个“坑”。
114 0
|
11月前
|
开发工具
微信小游戏开发实战5-重复执行和逻辑循环的区别
本篇主要内容包括了解帧的概念,以及理解重复执行和逻辑循环这两种循环积木块之间的区别。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。
67 0
|
存储
数组模拟队列(测试样例,含源码分析)
数组模拟队列(测试样例,含源码分析)
94 0
数组模拟队列(测试样例,含源码分析)
L2-037 包装机 (25 分)(队列加栈模拟)
L2-037 包装机 (25 分)(队列加栈模拟)
102 0
L2-037 包装机 (25 分)(队列加栈模拟)
|
编译器 Scala 开发者
函数使用注意事项和细节2|学习笔记
快速学习函数使用注意事项和细节2。
51 0
|
Java 编译器 Scala
函数使用注意事项和细节3|学习笔记
快速学习函数使用注意事项和细节3。
60 0
|
Java 编译器 Scala
函数使用注意事项和细节1|学习笔记
快速学习函数使用注意事项和细节1。
72 0
|
Go 开发者
函数注意事项和细节(1) | 学习笔记
简介:快速学习函数注意事项和细节(1)
67 0