検索

ホームページ  >  に質問  >  本文

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

如下列代码,

#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个队列互相独立。

高洛峰高洛峰2804日前584

全員に返信(2)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:48:23

    queue は、for ループ内で宣言されています。ループ queue が同じ場所に作成されるたびに、 それは破棄されます。したがって、常に同じアドレスが取得されます。ループを終了すると、すべての queue が存在しなくなります。 queue_list[] 内のポインタはすべて不正です。

    これらの queue をスタック上に作成したい場合は、queue<int> queue_list[10] を使用します。

    返事
    0
  • 迷茫

    迷茫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]<<
        }
    }

    返事
    0
  • キャンセル返事