如下列代码,
#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个队列互相独立。
伊谢尔伦2017-04-17 14:48:23
queue
は、for
ループ内で宣言されています。ループ queue
が同じ場所に作成されるたびに、 それは破棄されます。したがって、常に同じアドレスが取得されます。ループを終了すると、すべての queue
が存在しなくなります。 queue_list[]
内のポインタはすべて不正です。
これらの queue
をスタック上に作成したい場合は、queue<int> queue_list[10]
を使用します。
迷茫2017-04-17 14:48:23
このように書くのはループ内で繰り返し宣言することであり、キューはスタック上のすべて同じオブジェクトです。新しいものをヒープに置くには
#include
#include <キュー>
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] = キュー;
}
for (int i = 0; i < 10; ++i) {
std::cout <<キューリスト[i]<<
}
}