65,184
社区成员




#include <iostream>
#include <hash_map.h>
using namespace std;
int main(){
hash_map<int,string> hm(3); //初始化hash_map的桶的个数
hm.insert(make_pair(0,"hello"));
hm.insert(make_pair(1,"ok"));
hm.insert(make_pair(2,"bye"));
hm.insert(make_pair(3,"world"));
cout<<hm.size()<<endl;
cout<<hm.bucket_count()<<endl;
return 0;
}
template<class _Kty, class _Pr = less>
class hash_compare1
{ // traits class for hash containers
public:
//const static long lBucketSize = 0;
enum
{ // parameters for hash table
bucket_size = 4, // 0 < bucket_size
min_buckets = 8 // min_buckets = 2 ^^ N, 0 < N
};
。。。
#include <iostream>
#include <map>
#include <string>
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif
#ifdef __GXX_EXPERIMENTAL_CXX0X__
#include <unordered_map>
#endif
namespace std
{
using namespace __gnu_cxx;
}
namespace __gnu_cxx
{
template<> struct hash< std::string >
{
size_t operator()( const std::string& x ) const
{
return hash< const char* >()(x.c_str());
}
};
}
int main()
{
std::map<std::string, std::string> stdMap;
stdMap["_GLIBCXX_STD"] = "std";
stdMap["_GLIBCXX_BEGIN_NESTED_NAMESPACE"] = "+namespace";
stdMap["_GLIBCXX_BEGIN_NAMESPACE"] = "+namespace";
stdMap["_GLIBCXX_END_NESTED_NAMESPACE"] = "}";
stdMap["_GLIBCXX_END_NAMESPACE"] = "}";
stdMap["_GLIBCXX_END_NAMESPACE_TR1"] = "}";
stdMap["_GLIBCXX_BEGIN_NAMESPACE_TR1"] = "-namespace tr1 {";
stdMap["_GLIBCXX_STD2"] = "2std";
stdMap["_GLIBCXX_BEGIN_NESTED_NAMESPACE2"] = "2+namespace";
stdMap["_GLIBCXX_BEGIN_NAMESPACE2"] = "2+namespace";
stdMap["_GLIBCXX_END_NESTED_NAMESPACE2"] = "2}";
stdMap["_GLIBCXX_END_NAMESPACE2"] = "2}";
stdMap["_GLIBCXX_END_NAMESPACE_TR12"] = "2}";
stdMap["_GLIBCXX_BEGIN_NAMESPACE_TR12"] = "2-namespace tr1 {";
stdMap["_XXGLIBCXX_END_NAMESPACE_TR12"] = "X2}";
stdMap["_XXGLIBCXX_BEGIN_NAMESPACE_TR12"] = "X2-namespace tr1 {";
std::hash_map<std::string, std::string> hashMap;
hashMap["_GLIBCXX_STD"] = "std";
hashMap["_GLIBCXX_BEGIN_NESTED_NAMESPACE"] = "+namespace";
hashMap["_GLIBCXX_BEGIN_NAMESPACE"] = "+namespace";
hashMap["_GLIBCXX_END_NESTED_NAMESPACE"] = "}";
hashMap["_GLIBCXX_END_NAMESPACE"] = "}";
hashMap["_GLIBCXX_END_NAMESPACE_TR1"] = "}";
hashMap["_GLIBCXX_BEGIN_NAMESPACE_TR1"] = "-namespace tr1 {";
hashMap["_GLIBCXX_STD2"] = "2std";
hashMap["_GLIBCXX_BEGIN_NESTED_NAMESPACE2"] = "2+namespace";
hashMap["_GLIBCXX_BEGIN_NAMESPACE2"] = "2+namespace";
hashMap["_GLIBCXX_END_NESTED_NAMESPACE2"] = "2}";
hashMap["_GLIBCXX_END_NAMESPACE2"] = "2}";
hashMap["_GLIBCXX_END_NAMESPACE_TR12"] = "2}";
hashMap["_GLIBCXX_BEGIN_NAMESPACE_TR12"] = "2-namespace tr1 {";
hashMap["_XXGLIBCXX_END_NAMESPACE_TR12"] = "X2}";
hashMap["_XXGLIBCXX_BEGIN_NAMESPACE_TR12"] = "X2-namespace tr1 {";
#ifdef __GXX_EXPERIMENTAL_CXX0X__
std::unordered_map<std::string, std::string> unorderedMap;
unorderedMap["_GLIBCXX_STD"] = "std";
unorderedMap["_GLIBCXX_BEGIN_NESTED_NAMESPACE"] = "+namespace";
unorderedMap["_GLIBCXX_BEGIN_NAMESPACE"] = "+namespace";
unorderedMap["_GLIBCXX_END_NESTED_NAMESPACE"] = "}";
unorderedMap["_GLIBCXX_END_NAMESPACE"] = "}";
unorderedMap["_GLIBCXX_END_NAMESPACE_TR1"] = "}";
unorderedMap["_GLIBCXX_BEGIN_NAMESPACE_TR1"] = "-namespace tr1 {";
unorderedMap["_GLIBCXX_STD2"] = "2std";
unorderedMap["_GLIBCXX_BEGIN_NESTED_NAMESPACE2"] = "2+namespace";
unorderedMap["_GLIBCXX_BEGIN_NAMESPACE2"] = "2+namespace";
unorderedMap["_GLIBCXX_END_NESTED_NAMESPACE2"] = "2}";
unorderedMap["_GLIBCXX_END_NAMESPACE2"] = "2}";
unorderedMap["_GLIBCXX_END_NAMESPACE_TR12"] = "2}";
unorderedMap["_GLIBCXX_BEGIN_NAMESPACE_TR12"] = "2-namespace tr1 {";
unorderedMap["_XXGLIBCXX_END_NAMESPACE_TR12"] = "X2}";
unorderedMap["_XXGLIBCXX_BEGIN_NAMESPACE_TR12"] = "X2-namespace tr1 {";
#endif
for (int i = 0; i < 5; ++i)
{
const clock_t t = clock();
for (int j = 0; j < 1000000; ++j) stdMap.find("testfindkey");
std::cout << "stdMap " << i + 1 << " : " << clock() - t << std::endl;
}
std::cout << "\n---------------\n" << std::endl;
for (int i = 0; i < 5; ++i)
{
const clock_t t = clock();
for (int j = 0; j < 1000000; ++j) hashMap.find("testfindkey");
std::cout << "hashMap " << i + 1 << " : " << clock() - t << std::endl;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
std::cout << "\n---------------\n" << std::endl;
for (int i = 0; i < 5; ++i)
{
const clock_t t = clock();
for (int j = 0; j < 1000000; ++j) unorderedMap.find("testfindkey");
std::cout << "unorderedMap " << i + 1 << " : " << clock() - t << std::endl;
}
#endif
return 0;
}