Hashmap 源码与原理

本文参考了三篇博文:

1、https://blog.csdn.net/u010335911/article/details/26297859

2、https://blog.csdn.net/srzhz/article/details/7881946/

3、https://blog.csdn.net/ddkxddkx/article/details/6555754

下面给出源码,其他内容参考上述博文吧

hashmap 源码

#include   
#include   
#include   
#include  
using namespace std;  
struct string_less : public binary_function  //定义虚函数,以使用hashmap函数  
{  
public:  
    result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const  
    {  
        return(_Left.compare(_Right) < 0 ? true : false);  
    }  
};  
int main()  
{  
    hash_map > zhao;  
    hash_map>::iterator zhi;  
    hash_map>::iterator qiang;  
    hash_map>::iterator miss;  
    hash_map>::iterator you;  
    //运行监视zhao为{ size=9 }  
    zhao["a"] = 1;//键a对应值1  
    zhao["b"] = 2;  
    zhao["c"] = 3;  
    zhao["d"] = 4;  
    zhao["e"] = 5;  
    zhao["f"] = 6;   
    zhao["g"] = 7;  
    zhao["h"] = 8;  
    zhao["i"] = 9;  
  
    zhi=zhao.begin();  
    //监视显示zhi为("a",1)  
    cout<first<<" "<< zhi->second<first<<" ";  cout<< (zhi)->second<first << "\t" << qiang->second << endl; qiang++;  
    }  
    qiang = zhao.end();   
    //监视内容: <读取字符串的字符时出错。>, -842150451)end应该是最后一个键值对后的空间,将其- -就应该是最后一个键值对   
    cout<first<first <first << endl;  
    //输出i。返回一个常量迭代器,此迭代器用于发现反向hash_map中的首个元素。  
    cout << (--zhao.crend())->first << endl;  
    //输出a。返回一个常量迭代器,此迭代器用于发现反向hash_map中最后一个元素后的位置。 记得- -哦。  
    //zhao.clear();  
    //亲测可用,清除整个hash。      
    cout<first<first<first<first << endl;  
    //输出i  hash_map中键比指定键大的第一个元素,使用j VS崩溃了。  
    zhao.erase("k");  
    //删除掉该键,若不存在则无法删除  
    cout<second<

你可能感兴趣的:(C++基础与提高,数据结构/算法)