c++ - STL如何使构造10个不同的队列
高洛峰
高洛峰 2017-04-17 14:46:23
[C++讨论组]

如下列代码,

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
伊谢尔伦

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

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

迷茫

你这样写是在循环里重复声明,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;
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号