/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
problemer med iterator i hash_map
Fra : René Thomsen


Dato : 11-07-01 22:01

Hejsa,

jeg har lidt bøvl med at erklære en iterator i forbindelse med hash_map
klassen.

Hvis jeg f.eks. arbejde med vektor ville det se sådan ud:

vector<string> test;
test.push_back("foo");
test.push_back("bar");

vector<string>::iterator it = test.begin();
while (it != test.end()) {
cout << *it << endl;
it++;

Hvordan skal linien vector<string>::iterator erklæres, når man arbejder med
hash_maps?

Jeg bruger flg. hash_map:




 
 
René Thomsen (11-07-2001)
Kommentar
Fra : René Thomsen


Dato : 11-07-01 22:06

Hejsa igen,

ups, jeg kom til at sende mailen inden jeg var færdig (jeg hader
shortcuts...)

her følger fortsættelsen:

> Jeg bruger flg. key/value def. i hash_map:

hash_map<const char*, string, hash<const char*>, eqstr> mithashmap;

hvor eqstr er:

struct eqstr {
bool operator()(const char* s1, const char* s2) const {
return strcmp(s1, s2) == 0;
}
};

Mvh.
René Thomsen





Igor V. Rafienko (13-07-2001)
Kommentar
Fra : Igor V. Rafienko


Dato : 13-07-01 13:25

[ René Thomsen ]


> jeg har lidt bøvl med at erklære en iterator i forbindelse med hash_map
> klassen.


_Hva_ er problemet?


> Hvis jeg f.eks. arbejde med vektor ville det se sådan ud:
>
> vector<string> test;
> test.push_back("foo");
> test.push_back("bar");
>
> vector<string>::iterator it = test.begin();
> while (it != test.end()) {
> cout << *it << endl;
> it++;


neeyy: std::copy( v.begin(), v.end(),
    std::ostream_iterator< std::string >( std::cout, "\n" ) );
      
:)


> Hvordan skal linien vector<string>::iterator erklæres, når man
> arbejder med hash_maps?


hash_map< «template-list» > hm;
hm[ "foo" ] = "bar";
hm[ "zot" ] = "qux";

for ( hash_map< «template-list» > :: iterator i = hm.begin();
i != hm.end();
++i )
cout << (*i).first << " -> " << (*i).second << "\n";


Siden gcc installasjonen på huset er litt b0rken for tiden (nei, ser
der, configure ble nettopp ferdig), kan jeg ikke teste koden, men det
skulle overraske meg veldig dersom dette ikke fungerte (modulo std::
prefiks her og der).





ivr
--
On the door of a Moscow hotel room: If this is your first visit to the
USSR, you are welcome to it.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste