контейнер очереди с типом карты

Я пытаюсь написать игру в блэкджек с помощью STL. Он должен содержать несколько различных контейнеров, которые включают std::mapи std::queue. Я пытаюсь сделать следующее:

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

Однако я получаю ошибки, одна из которых гласит, что аргумент шаблона недопустим для объявления очереди. Как вставить mapконтейнер в queueконтейнер? Мне нужно сделать это с listконтейнером.

2 ответа

  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;
    
  2. Вы должны указать тип объекта внутри< >, но вы упомянули объект непосредственно вместо его типа.

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

    cards имеет типmap<string, int>, поэтому вы поместили этот тип внутрь < >.

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