【问题标题】:How to create a Bitset Array Queue?如何创建位集数组队列?
【发布时间】:2015-05-18 13:04:01
【问题描述】:

我正在从设备读取 14 字节的消息,并将它们存储在一个位集数组中...

bitset<8> currentMessage[14];

我想为这些消息创建一个队列。 (理想情况下,我想要最后 10 条消息,但我认为这可能是另一个问题?limit size of Queue<T> in C++。)

如何创建这个队列?

我试过了……

std::queue<bitset> buttonQueue;

但我收到以下错误:

  • 错误 C2955:“std::bitset”:使用类模板需要模板参数列表
  • 错误 C2133:'buttonQueue':未知大小
  • 错误 C2512:“std::queue”:没有合适的默认构造函数可用

(注意,我注意到了 Boost 的 Circular Buffer,这是否更适合我正在尝试做的事情?)

我是 C++ 新手,谁能帮帮我?

【问题讨论】:

    标签: c++ queue bitset


    【解决方案1】:

    模板参数必须是完整的类型。而像std::bitset 这样的模板类没有它的大小就不是一个完整的类型。所以你需要做例如

    std::queue<bitset<8>> buttonQueue;
    

    换句话说,您还需要提供位集大小。

    【讨论】:

    • 我不需要像 std::queue[14]> buttonQueue; 这样的东西吗?因为每条消息都是一个由 14 个比特集组成的数组,每个比特集的大小为 8?
    • @KevinPaton 使用模板处理普通数组可能会出现问题,并且通常会四处传递。相反,我建议你使用std::array,然后你可以这样做,例如std::queue&lt;std::array&lt;std::bitset&lt;8&gt;, 14&gt;&gt;,队列将包含简单的普通对象,它们本质上是位集数组。
    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 2017-01-17
    • 2012-01-10
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多