c++数据结构 --unorder_map

#include <iostream>
#include <unordered_map>
using namespace std;
class Book
{
private:
    string num;
    string name;
public:
    Book() {};
    Book(string num,string name) { this ->name = name;this ->num = num;};
    string getNum() { return num;};
    string getName() { return name;};
};
int main()
{
    unordered_map<string,Book>lib;
    Book b("001","高级语言程序设计") ;
    lib[b.getNum()] = b;
    unordered_map<string,Book>::iterator it;
    it  = lib.find( *(new string("001")) );
    if ( it != lib.end() )
        cout << (it ->second).getName();
    else
        cout << "没有给元素!";

    return 0;
}

unsigned int JSHash(const char *str){
    unsigned int hash = 1315423911;
    while (*str){
        hash ^= ((hash << 5) + (*str++) + (hash >> 2));
    }
    return (hash & 0x7FFFFFFF);
}

class StrHash{
public:
    size_t operator()(const string& s) const {
        return JSHash(s.c_str());
    }
};

class StrCompare{
public:
    bool operator()(const string& a,const string& b) const {
        return (a==b);
    }
};

字符哈希及字符串比较函数

note:

1.内部实现为: hasht_table

2.示例中,已string为key,unorder_map已经为string创建了hash值计算函数,所以无需重写(貌似是这样的)

3.(Todo)详解具体使用方法

时间: 2024-07-30 13:03:32

c++数据结构 --unorder_map的相关文章

Trie实践:一种比哈希表还快的数据结构

本文分为5部分.我从思考的角度,由浅到深带你认识Trie数据结构. 1.桶状哈希表与直接定址表的概念. 2.为什么直接定址表会比桶状哈希表快 3.初识Trie数据结构 4.Trie为什么会比桶状哈希表快 5.实际做实验感受下Trie , std::map , std::unordered_map的差距 6.最后的补充 1.桶状哈希表与直接定址表的概念. 先考虑一下这个问题:如何统计5万个0-99范围的数字出现的次数? 可以用哈希表来进行统计.如下: [cpp] view plaincopypri

【数据结构】之散列链表(Java语言描述)

散列链表,在JDK中的API实现是 HashMap 类. 为什么HashMap被称为"散列链表"?这与HashMap的内部存储结构有关.下面将根据源码进行分析. 首先要说的是,HashMap中维护着的是一个数组: transient Node<K,V>[] table; ,数组中的每个元素都是一个 Node 对象.这里的Node是HashMap的一个内部类,代码如下: static class Node<K,V> implements Map.Entry<

旧题新做:从idy的视角看数据结构

“今天你不写总结……!!!” 额…… 还是讲我的吧.这些考试都是idy出的题. 20170121:DFS序. ST表.线段树练习 这是第一次考数据结构. Problem 1. setsum 1 second 给你一个长度为N 的整数序列,支持两种操作: • modity l r val 将区间[l,r] 中的所有数修改为val • query l r 询问区间[l,r] 所有数的和 分析:最简单的线段树,区间更改区间求和.但注意是更改,不是添改,sum与flag需同时覆盖. Problem 2.

数据结构Set和Map

一.数据结构 Set 集合的基本概念:集合是由一组无序且唯一(即不能重复)的项组成的.这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中.  特点:key 和 value 相同,没有重复的 value.ES6 提供了数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. 1. 如何创建一个 Set const s = new Set([1, 2, 3]); 2.属性 console.log(s.size); // 3 3.Set 类的方法 --set.add(v

数据结构基本概念

什么是数据结构 "数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出"--Sartaj Sahni,<数据结构.算法与应用> "数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现."--Clifford A.Shaffer,<数据结构与算法分析> "数据结构(data structture)是计算机中存储.组织数据的方式.通常情况下,经i想你

分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令

Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sorted Set. Redis数据类型内存结构分析 Redis内部使用一个redisObject对象来表示所有的key和value.redisObject主要的信息包括数据类型(type).编码方式(encoding).数据指针(ptr).虚拟内存(vm)等.type代表一个value对象具体是何种数

【Python&amp;数据结构】 抽象数据类型 Python类机制和异常

这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下. 抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象.然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也变得同样重要.虽然计算机语言一开始就有对数据的抽象,但是那些都只是对一些最基本的

深入浅出分析MySQL索引设计背后的数据结构

在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题: 1.为什么innodb表需要主键? 2.为什么建议innodb表主键是单调递增? 3.为什么不建议innodb表主键设置过长? B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.B通常

数据类型和常用数据结构

1.数据类型 几乎是所有的程序设计语言都会讲到数据类型的概念.简单的说,数据类型就是一个值的集合及在这些值上定义的一系列操作的总称.例如:对于C语言的整数类型,其有一定的取值范围,对于整数类型还定义了加法.减法.乘法.除法和取模运算等操作. 按照数据类型的值是否可以分解,数据类型可以分为基本数据类型和聚合数据类型. *基本数据类型:其值不能进一步分解,一般是程序设计语言自身定义的一些数据类型,例如C语言中.字符型.浮点型等. *聚合数据类型:其值可以进一步分解为若干分量,一般是用户自定义的数据类