Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » stl Problem mit einer Map

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.09.2006, 09:52 Uhr
ch1972



Betreff: std::map<string,std::list> klappt nicht

Voraussetzung: WinXP und Visual Studio 6.0

Hallo Leute,

ich habe ein Problem mit einer STL Map, Ich möchte in diese Map einen String als Key und eine liste von Strings als Value.

Deklaration und damit verbundene Fehlermeldung:
1. Versuch
std::map <std::rstring, std::list> myMap;
-> error C2133: 'myMap' : Unbekannte Groesse
2. Versuch
std::map <std::rstring, std::list<std::rstring>> myMap;
-> : error C2146: Syntaxfehler : Fehlendes ',' vor Bezeichner 'myMap'

Was Funktioniert aber Speicherlöcher verursacht ist:
std::map <std::rstring, std::list<std::rstring>*> value;
alseine Map mit Zeiger auf die mit new angelegten Listenelemente.


Kann mir jemand sagen wie/ob es möglich ist eine Map mit einem Value std::list zu füllen ohne dynamischen Speicher zu benutzen?

lg carsten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.09.2006, 09:57 Uhr
(un)wissender
Niveauwart


Poste mal code.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.09.2006, 10:38 Uhr
Th



So ist es richtig:

C++:
#include <map>
#include <list>
#include <string>

typedef std::map <std::string, std::list<std::string> > MyMap;

MyMap myMap;


Beachte das Leerzeichen zwischen den beiden schließenden Klammern (> >) !!!

Dieser Post wurde am 28.09.2006 um 10:38 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.09.2006, 12:09 Uhr
ch1972



Danke für die Lösung!

gruss Carsten
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.09.2006, 20:15 Uhr
0xdeadbeef
Gott
(Operator)


Hintergrund ist, dass du u.U. auch geshiftete Ausdrücke zum Konkretisieren einer template benutzen könntest. Zum Beispiel

C++:
#include <iostream>

template <unsigned i> struct integral_log2 {
  static unsigned const val = integral_log2<i >> 1>::val + 1;
};

template<> struct integral_log2<1> {
  static unsigned const val = 0;
};

int main() {
  std::cout << integral_log2<1024>::val << std::endl;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: