• STL1-unordered_map


    最近几天我要整理一下遇到的STL的函数,本来其实我是没有打算学的,认为用C就完全可以实现,干嘛要记那么多复杂的函数呢,所以我之前的做法都是将常用的C函数自己做了一个lib库,使用起来也是蛮方便的呢,但是最近在做leetcode的题时,发现如果使用自己的函数来实现,不只是代码量迅速的上升,而且当遇到指针内存分配的时候,问题也就更复杂了,当看到人家调用几行的STL函数就把功能实现而且代码的可读性也非常的好。这就促使我要探一探STL的函数库。几天就先谈一谈STL::unordered_map吧,同时也学一下C++标准库的map和我最爱的C语言的hash。我自己认为这是很重要的几个数据结构,不管使用哪种语言。

    1、hash

    对于散列表的基础知识,许多博客都进行了非常详细的讲解,参考http://kb.cnblogs.com/page/189480/.

    散列表需要两个条件:1)将输入转化为整数的一个散列函数 2)使用一个处理冲突的方法。

    2、map

    map是C++标准库函数,其实现方式是红黑树,其储存的key值都是有序的。

    #include <map>  声明: map<string,int> words; 插入:words["vermeer"] = 1;  

    对字数统计:

    while(cin>>tword)

      words[tword]++;

    map对象有两个数据成员,一个是first,另一个是second.

    其成员函数主要包括:find(string str);如果str在里面则返回一个iterator 指向key/value形成的一个pair

    count(string str):返回str在map内出现的个数,一般的map只能出现一次,如果需要储存多份相同的key值,就必须使用multimap,此处不做介绍。

    其具体内容请参见:https://msdn.microsoft.com/zh-cn/library/kf18ek11.aspx

    3、unordered_map

    unordered_map不是C++的标准库函数,因此在跨平台操作时可能会出现不兼容的情况,因此请谨慎使用。

    与map不同的是,unordered_map在内部不做任何的排序,其存储位置取决于哈希值允许直接通过其键值为快速访问单个元素(具有恒定平均的平均时间复杂度)

    常用的成员函数:end()、find()、count()、insert()等。

    其具体内容请参见:https://msdn.microsoft.com/zh-cn/library/bb982522.aspx

  • 相关阅读:
    shell 脚本3 (输出与流程控制)
    centos 添加sudo 权限
    rz安装
    centos 安装mysql
    linux删除文件未释放
    关于字符串String的编程。
    spring mvc 学习指南二
    spring mvc 学习指南一
    《 spring mvc 》学习计划
    关于jsp的总结
  • 原文地址:https://www.cnblogs.com/jiangnanrain/p/4367338.html
Copyright © 2020-2023  润新知