如下列代码,
#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个队列互相独立。
你的
queue
是聲明在for
循環內部的。每次循環queue
都在同一個位置被創建,然後就被銷毀了。所以始終得到的是同一個位址。退出循環時,所有的queue
都不復存在了。queue_list[]
裡面的指標全是非法的。如果想在堆疊上建立這些
queue
,queue<int> queue_list[10]
就可以了。你這樣寫是在循環裡重複聲明,queue全是棧裡的同一個物件。要 new 在堆上