Ganz dummes Problem mit der STL (c++)

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Ganz dummes Problem mit der STL (c++)
Hi,

folgendes c++ Programm:


#include <hash_map.h> 
 
main (int argc, char *argv[])
{
    hash_map<int, int> db;
}

kompiliert ohne Probleme, allerdings krieg ich dann diese dumme Warnung von wegen man soll doch bitte <hash_map> anstatt <hash_map.h> nehmen. Gut, mach ich:

#include <hash_map> 
 
main (int argc, char *argv[])
{
    std::hash_map<int, int> db;
}

Dann meldet aber der Compiler hash_map waehre undefiniert. Ich hab schon alle Kombinationen von <hash_map> , <hash_map.h > und
std::hash_map<int, int> db;, hash_map<int, int> db; durchpermutiert, es funktioniert nur das Programm ganz oben. Wenn ich anstatt hash_map vector nehme, funktioniert es wie es sollte, d.h. <vector.h> und vector db; , bzw. und std::vector db;

Liegt die hash_map etwa in einem eigenen (geheimen :wand: ??) namespace? Wie krieg ich diese verreckte Warnung weg…?


nach einem blick in die kristallkugel /usr/include/c++/3.3/ext/hash_map:

#include <ext/hash_map>
using namespace __gnu_cxx;
int main (int argc, char *argv[])
{
        hash_map<int, int> db;
}

hash_map ist eine SGI extension.

hth :slight_smile: