对于循环循环仅 3 次
For loop loops only 3 times
为什么循环只有 3 次?
for (size_t i = 0; i < 10; i++)
{
std::cout << "Dodany element kolejki: " << i << std::endl;
queue.Enqueue(i);
}
当 i 等于 3 时,for 循环总是中断。这是队列类的代码:
#ifndef QUEUE_H
#define QUEUE_H
#include "Node.h"
#include <stdexcept>
template<class T>
class Queue
{
public:
Queue()
{
this->FirstElement = nullptr;
this->LastElement = nullptr;
}
void Enqueue(T value)
{
if (0 == Size())
{
FirstElement = new Node<T>(value);
LastElement = FirstElement;
}
else
{
LastElement->Previous = new Node<T>(value);
LastElement = LastElement->Previous;
}
}
T Dequeue()
{
if (0 == Size())
{
throw std::out_of_range("Out of range ! Empty stack !");
}
T element(FirstElement->Value);
if (nullptr != FirstElement->Previous)
{
Node<T>* temp = FirstElement->Previous;
delete FirstElement;
FirstElement = temp;
}
else
{
delete FirstElement;
FirstElement = nullptr;
LastElement = nullptr;
}
return element;
}
int Size()
{
int queueSize = 0;
Node<T>* element = FirstElement;
if (nullptr != FirstElement)
{
while (nullptr != FirstElement->Previous)
{
++queueSize;
}
++queueSize; //Uwzglednienie ostatniego elementu, ktory nie jest policzony w petli
}
return queueSize;
}
private:
Node<T>* FirstElement;
Node<T>* LastElement;
};
#endif // !QUEUE_H
和节点结构的代码:
#ifndef NODE_H
#define NODE_H
template<class T>
struct Node
{
public:
Node(T value)
{
this->Previous = nullptr;
this->Value = value;
}
Node<T>* Previous;
T Value;
};
#endif // !NODE_H
这是输出:
Dodany element kolejki: 0
Dodany element kolejki: 1
Dodany element kolejki: 2
当我删除循环的排队方法的调用 10 次时。没有来自编译器的警告或引发的异常或任何其他任何类型的错误。由于某种原因,它只是循环了 3 次。
您的程序不会在循环迭代 3 处停止,而是在 3 次迭代后挂起。这很可能是由于 Queue::Size() 函数似乎进入了一个无限循环。
我想你的意思是大小是这样的:
int Size()
{
int queueSize = 0;
Node<T>* element = FirstElement;
if (nullptr != FirstElement)
{
while (nullptr != element->Previous)
{
element = element->Previous;
++queueSize;
}
++queueSize;
}
return queueSize;
}
相关文章:
- 嵌套的 for 循环不循环通过第二个数组
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 编写按初始值循环的循环的更好方法是什么
- 如何在重复循环中循环遍历 std::vector
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 自定义对象构造函数在循环外部循环
- 为什么在我的程序中的第二个循环时,当它在循环之前循环时不起作用
- 而循环比循环更有效.可能是什么原因
- 如何在循环中循环访问两个向量
- C++ for 循环继续循环,即使它不应该循环
- 当使用文件中的getline时,循环仅循环一次
- C 数组,如果循环.如果循环忽略值并在输入值时给出错误的行
- 对于循环(内部循环时)被忽略
- 对于循环,循环次数比它必须的次数多一次
- Openmp-嵌套用于循环
- 有类似于循环(圆形)迭代器的东西吗?
- 我是否必须求助于循环,以比较C 中的两个2D阵列
- C++嵌套用于循环
- C++嵌套用于循环-内积-marix乘法
- 为什么for循环中定义的变量只存在于循环内部