【问题标题】:Array of queue container in c++C ++中的队列容器数组
【发布时间】:2015-04-27 07:19:34
【问题描述】:

我是 C++ 的初学者,但我必须在我的项目中实现一些高级的东西。 基本上我想创建队列容器的数组。我有一个设备类,它有 op_parmas_t 类型的队列和该队列中的应用程序入队。但是现在我希望不同的线程在不同的队列上操作,但在单个设备上,所以我需要设备类中的队列数组。

class DeviceCPU : publice Device {
Public:
      DeviceCPU();
      ~DeviceCPU();
      int enqueue(op_params_t *op);
Private:
      std::queue<op_params_t *> opsEnqueued;
}

但是对于多个线程,我想要不同的队列。所以我想创建队列数组, 类似的,

std::queue<op_params_t *> opsEnqueued[MAX_THREADS];

或者我可以创建队列的向量,但我不知道具体如何,需要一些指针。

【问题讨论】:

  • 所有必要的指针都已经在这里了:en.cppreference.com/w/cpp
  • 您提供的代码 - std::queue&lt;op_params_t *&gt; opsEnqueued[MAX_THREADS]; - 确实是 queues 的数组...您是否尝试过,如果是,您遇到了什么具体问题?正如您所说,std::vector&lt;std::queue&lt;&gt;&gt; 是另一种选择 - 是否更方便或资源友好取决于您的代码如何使用它......希望您在编写应用程序时会意识到哪个更好。
  • 我还想了解为什么人们不赞成这个问题。也许我可以让它变得更好。

标签: c++ stl containers


【解决方案1】:
#include <array>
std::array<std::queue<op_params_t*>, MAX_THREADS> opsEnqueued;

【讨论】:

    【解决方案2】:

    使用动态数组

    #include <vector>
    std::vector<std::queue<op_params_t *>> opsEnqueued;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多