Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么此代码无法打印队列中的所有值?_C++ - Fatal编程技术网

C++ 为什么此代码无法打印队列中的所有值?

C++ 为什么此代码无法打印队列中的所有值?,c++,C++,你能解释一下为什么代码没有打印队列中的所有值吗 for (int i = 0; i < q.size(); ++i) std::cout << q.dequeue() << std::endl; for(int i=0;i

你能解释一下为什么代码没有打印队列中的所有值吗

for (int i = 0; i < q.size(); ++i)
    std::cout << q.dequeue() << std::endl;
for(int i=0;istd::cout每次调用
q.dequeue()
时,显然
q.size()
将减少,并且您将只输出大约一半的队列元素。因此,您可能希望在开始迭代之前缓存初始大小,例如

const size_t n = q.size();
for (size_t i = 0; i < n; ++i)
    std::cout << q.dequeue() << std::endl;
const size\u t n=q.size();
对于(尺寸i=0;istd::cout在逻辑上与上面Paul R的答案相似。队列中的所有项目都将退出队列,因此循环直到队列为空

while (q.size()) 
{
    std::cout << q.dequeue() << std::endl;
}
while(q.size())
{

std::难道不能学习如何编写该队列类是如何定义的吗?没有标准的库容器或适配器具有名为
dequeue
的成员函数。