【问题标题】:queue container with map type具有地图类型的队列容器
【发布时间】:2016-05-03 04:57:18
【问题描述】:

我正在尝试使用 STL 编写二十一点游戏。它需要包含几个不同的容器,包括std::mapstd::queue。我正在尝试执行以下操作:

map<string, int> cards = {{"1H", 1}, {"2H", 2}};
queue<cards> deck;

但是,我遇到了错误,其中之一是模板参数对队列声明无效。如何将map 容器插入queue 容器?我还需要使用list 容器来执行此操作。

【问题讨论】:

    标签: c++ dictionary stl queue


    【解决方案1】:
    map<string, int> cards = {{"1H", 1}, {"2H", 2}};
    queue<map<string, int>> deck;
    

    或使其更具可读性:

    using CardMap = std::map<string, int>;
    CardMap cards = {{"1H", 1}, {"2H", 2}};
    std::queue<CardMap> deck;
    

    【讨论】:

    • 那么我需要手动将地图的内容插入队列吗?
    • @Ritchie:您的要求是将完整的map 插入queue,而不是将map 的内容插入queue。因此,一旦您更正了队列的声明,您就可以使用queue::push() 一次性将完整的map 插入queue
    【解决方案2】:

    您应该在&lt; &gt; 中指定对象的类型,但您直接提到了该对象而不是它的类型。

    map<string, int> cards = {{"1H", 1}, {"2H", 2}};
    queue<cards> deck; //Wrong
    

    cards 属于 map&lt;string, int&gt; 类型,因此您已将此类型放入 &lt; &gt;

    queue<map<string, int>> deck; //right
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多