C + + STL 의 hashtable,hash_map 와 hashmultimap,hash_set 와 hashmultiset 사용

5834 단어 STL
      ,    。


hash_table STL hash_map   hash_sethash_table    /    /           O(1),
              ,  hash_table        ,             ,
          /    /        hash_table。hash_table      hash_table         
      hash_table ,        list    ,            copy,        ,
      hash_table    hash_table(      )  。
//SGI STL  map        ,hash_map hash table  。
//hash_map         ,hash_multimap        。
//        map multimap   。   hash table         ,
//hash_map(hash_multimap)         hash table   。
//
//hash_multimap hash_map     multimap map     ,
//hash_multimap        hash table,          ,
//        insert_equal(),hash_multimap hash_map  ,          。
#include
#include
using namespace std;
//using namespace _gnu_cxx;
int main()
{
    hash_map<char, int, hash<char>, equal_to<char> > m;//char     ,int     。
    m['a'] = 10;
    m['b'] = 2;
    cout << m.size() << endl;//  2.
    cout << m.find('a')->second << endl;
    cout << m.count('a') << endl;

    system("pause");
    return 0;
}
/* hash_set hash_multiset:         hashtable     ,       hash_set  ,    hashtable     。  set、multiset  ,hash_set、hash_multiset        。 hash_set set  ,      。     set                 hashtable insert_unique()。 hash_multiset multiset  ,      ,     multiset  。             hashtable insert_equal()。 hash_map hash_multmap:                 hashtable     ,       hash_map  ,    hashtable     。  map、multimap  ,hash_map、hash_multimap        。 hash_map map  ,      。     set                 hashtable insert_unique()。 hash_multimap multimap  ,      ,pair             hashtable insert_equal()。 */

//unordered_map hash_map    ,unordered_map C++11 ,    


#include
#include
#include
using namespace std;
int main()
{
    unordered_map<const char*, int>days;
    days["january"] = 31;
    days["february"] = 28;
    days["march"] = 31;
    days["april"] = 30;
    days["may"] = 30;
    days["june"] = 30;
    cout << "june->" << days["june"] << endl;//30

    unordered_map<const char*, int>::iterator ite1 = days.begin();
    unordered_map<const char*, int>::iterator ite2 = days.end();
    for (; ite1 != ite2; ++ite1)
        cout << ite1->first << " " << ite1->second << endl;

    system("pause");
    return 0;
}

좋은 웹페이지 즐겨찾기