Code berikut merupakan source code dari kelas hashmap yang dapat digunakan baik windows maupun linux, hehehehe
//file HashMap.h #ifndef HASH_MAP #define HASH_MAP #ifdef WIN32 #include <hash_map> #define hashmap stdext::hash_map #else #include <ext/hash_map> #define hashmap __gnu_cxx::hash_map #endif #endif
sebenarnya hashmap bukan sebuah kelas, hanya alias aja untuk stdext::hash_map di windows atau __gnu_cxx::hash_map untuk linux. Source diatas dapat digunakan untuk kode yang ada posting ini sebagai contoh penggunaan. Tinggal include aja file HashMap.h di file apapun, dan hashmap langsung dapat digunakan seperti container STL lainnya.
Untuk full compatibility antara windows dan linux, terdapat beberapa hal yang perlu diperhatikan:
- Gunakan tipe dasar sebagai key dan value
- Jika ingin menyimpan tipe bentukan ato object, gunakan pointer terhadap tipe/object tersebut
- Khusus untuk string, akan bermasalah di linux, jadi gunakan const char* saja. Mengubah std::string ke const char* tinggal memanggil fungsi c_str(). Untuk sebaliknya cukup dengan std::string(/*si const char**/)
Sebenarnya banyak implementasi HashMap diluar sana yang independent dan full featured. Ini hanya pembungkus dari hashmap bawaan untuk mengatasi masalah kompatibilitas, karena di windows dan linux berbeda. Semoga bermanfaat, hehe.