2016-05-03 16 views
0

Ich versuche, ein Blackjack-Spiel mit der STL zu schreiben. Es muss einige verschiedene Behälter enthalten, die std::map und std::queue enthalten. Ich versuche, die folgendes zu tun:Warteschlange Container mit Kartentyp

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

Aber ich bin immer Fehler, von denen heißt das Template-Argument für die Warteschlange Erklärung ungültig ist. Wie füge ich den map Container in den queue Container ein? Ich muss dies auch mit einem list Container tun.

Antwort

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

oder es besser lesbar zu machen:

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

Also muss ich den Inhalt der Karte manuell in die Warteschlange einfügen? –

+0

yup, willkommen in 'C++' –

+0

@Ritchie: Ihre Anforderung ist es, die komplette 'map' in' queue' einzufügen und nicht den Inhalt von 'map' in' queue'. Wenn Sie also die Deklaration Ihrer Warteschlange korrigiert haben, können Sie die vollständige 'map' in' queue' auf einmal mit 'queue :: push()' einfügen. – sameerkn

0

Sie sollten die Art des Objekts innerhalb < > angeben, aber Sie das Objekt direkt anstelle seiner Art erwähnt hatte.

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

cards ist vom Typ map<string, int> so haben Sie diese Art innerhalb < > setzen.

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