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

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

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 程序员
ArrayList扩容机制:流程图+源码解析给你整得明明白白
ArrayList的扩容机制是java基础面试题,是每个java程序员学习路上都会遇到的一个问题,也是大多数人第一次看的java源码,今天布狼牙就带大家来看一下源码.
|
5月前
|
存储 算法 Swift
Swift开发——循环执行方式
Swift语言中的循环主要包括`for-in`和`while`结构。`for-in`适用于遍历数字区间、字符串和字典,支持使用`stride`函数定制步进。字典遍历时,可以用二元元组`(k, v)`访问键值对。`while`循环有标准形式和`repeat-while`形式,确保至少执行一次循环体。程序示例展示了`for-in`和不同`while`结构的用法,包括计算阶乘、奇数和、加密字符串以及最大公约数和最小公倍数。
39 0
Swift开发——循环执行方式
|
消息中间件 存储 负载均衡
两个实验让我彻底弄懂了「订阅关系一致」
这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:**保证订阅关系一致**。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。
两个实验让我彻底弄懂了「订阅关系一致」
|
5月前
|
Java
Java线程学习经典例子-读写者演示
Java线程学习经典例子-读写者演示
23 0
|
6月前
第六章 利用数组处理批量数据
第六章 利用数组处理批量数据
29 0
|
计算机视觉
队列的概念及结构(内有成型代码可供CV工程师参考)
队列的概念及结构(内有成型代码可供CV工程师参考)
74 0
|
存储 缓存 前端开发
伙伴匹配推荐接口的优化策略【优先队列+多线程分批处理,java实现】
伙伴匹配推荐接口的优化策略【优先队列+多线程分批处理,java实现】
162 0
|
存储
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
【数据结构】—— 队列基础知识以及数组模拟队列的分析、演示及优化
63 0
|
存储 Linux C语言
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
|
测试技术 数据库 Python
软件测试面试题:不可逆的操作,如何处理,比如删除一个订单这种接口如何测试
软件测试面试题:不可逆的操作,如何处理,比如删除一个订单这种接口如何测试
211 0