c++ - STL如何使构造10个不同的队列

浏览:49日期:2023-04-11

问题描述

如下列代码,

#include <iostream>#include <queue>int main() { queue<int>* queue_list[10]; for (int l = 0; l < 10; ++l) {queue<int> queue;queue_list[l] = &queue; } for (int i = 0; i < 10; ++i) {cout << queue_list[i] << endl; }}

我循环初始化了10个队列,可是我打印出来发现是同一个地址,会互相影响;请问如何可以让10个队列互相独立。

问题解答

回答1:

你的queue是声明在for循环内部的。每次循环queue都在同一个位置被创建,然后就被销毁掉了。所以始终得到的是同一个地址。退出循环时,所有的queue都不复存在了。queue_list[]里面的指针全是非法的。

如果想在栈上创建这些queue,queue<int> queue_list[10]就可以了。

回答2:

你这样写是在循环里重复声明,queue全是栈里的同一个对象。要 new 在堆上

#include <iostream>#include <queue>int main() { std::queue<int>* queue_list[10]; for (int l = 0; l < 10; ++l) {std::queue<int> *queue = new std::queue<int>;queue_list[l] = queue; } for (int i = 0; i < 10; ++i) {std::cout << queue_list[i] << std::endl; }}

相关文章: